
    g                        U d dl mZ d dlZd dlZd dlmZ d dlmZ ddlm	Z	 ddl
mZ ej        rd d	lmZ d
Z eg d          ZdZ	 	 d dlZn# e$ r d dlZY nw xY wedz  Zn# e$ r Y nw xY w	 d dlZedz  Zn# e$ r Y nw xY w G d de          Zej        Zded<   ej        eef         Zh dZ	 	 	 	 	 	 d2d3dZ d4d$Z!d5d)Z" G d* d+ej#                  Z$d6d1Z%dS )7    )annotationsN)	b64encode)Enum   )UnrewindableBodyError   )to_bytes)Finalz@@@SKIP_HEADER@@@)accept-encodinghost
user-agentzgzip,deflatez,brz,zstdc                      e Zd ZdZdS )_TYPE_FAILEDTELLr   N)__name__
__module____qualname__token     P/var/www/html/4nations/venv/lib/python3.11/site-packages/urllib3/util/request.pyr   r   '   s        EEEr   r   zFinal[_TYPE_FAILEDTELL]_FAILEDTELL>   GETHEADTRACEDELETECONNECTOPTIONS
keep_alivebool | Noneaccept_encodingbool | list[str] | str | None
user_agent
str | None
basic_authproxy_basic_authdisable_cachereturndict[str, str]c                   i }|rMt          |t                    rn2t          |t                    rd                    |          }nt          }||d<   |r||d<   | rd|d<   |r:dt          |                    d                                                     |d<   |r:dt          |                    d                                                     |d	<   |rd
|d<   |S )ad  
    Shortcuts for generating request headers.

    :param keep_alive:
        If ``True``, adds 'connection: keep-alive' header.

    :param accept_encoding:
        Can be a boolean, list, or string.
        ``True`` translates to 'gzip,deflate'.  If the dependencies for
        Brotli (either the ``brotli`` or ``brotlicffi`` package) and/or Zstandard
        (the ``zstandard`` package) algorithms are installed, then their encodings are
        included in the string ('br' and 'zstd', respectively).
        List will get joined by comma.
        String will be used as provided.

    :param user_agent:
        String representing the user-agent you want, such as
        "python-urllib3/0.6"

    :param basic_auth:
        Colon-separated username:password string for 'authorization: basic ...'
        auth header.

    :param proxy_basic_auth:
        Colon-separated username:password string for 'proxy-authorization: basic ...'
        auth header.

    :param disable_cache:
        If ``True``, adds 'cache-control: no-cache' header.

    Example:

    .. code-block:: python

        import urllib3

        print(urllib3.util.make_headers(keep_alive=True, user_agent="Batman/1.0"))
        # {'connection': 'keep-alive', 'user-agent': 'Batman/1.0'}
        print(urllib3.util.make_headers(accept_encoding=True))
        # {'accept-encoding': 'gzip,deflate'}
    ,r   r   z
keep-alive
connectionzBasic zlatin-1authorizationzproxy-authorizationzno-cachezcache-control)
isinstancestrlistjoinACCEPT_ENCODINGr   encodedecode)r   r    r"   r$   r%   r&   headerss          r   make_headersr5   7   s   b !G 5os++ 	... 	.!hh77OO-O%4!" + * - , 
GYz00;;<<CCEEGG 	   
MY/66yAABBIIKKMM 	%&  .#- Nr   body
typing.Anypos_TYPE_BODY_POSITION | Nonec                    |t          | |           n>t          | dd          -	 |                                 }n# t          $ r
 t          }Y nw xY w|S )z
    If a position is provided, move file to that point.
    Otherwise, we'll attempt to record a position for future use.
    Ntell)rewind_bodygetattrr;   OSErrorr   )r6   r8   s     r   set_file_positionr?      so     D#	vt	$	$	0	))++CC 	 	 	 CCC	
 Js   ; AAtyping.IO[typing.AnyStr]body_pos_TYPE_BODY_POSITIONNonec                "   t          | dd          }|Et          |t                    r0	  ||           dS # t          $ r}t	          d          |d}~ww xY w|t
          u rt	          d          t          dt          |           d          )z
    Attempt to rewind body to a certain position.
    Primarily used for request redirects and retries.

    :param body:
        File-like object that supports seek.

    :param int pos:
        Position to seek to in file.
    seekNzAAn error occurred when rewinding request body for redirect/retry.zRUnable to record file position for rewinding request body during a redirect/retry.z1body_pos must be of type integer, instead it was .)r=   r-   intr>   r   r   
ValueErrortype)r6   rA   	body_seekes       r   r<   r<      s     fd++IHc!:!:	Ih 	 	 	'S 	 
[	 	 #4
 
 	

 QXQQQ
 
 	
s   7 
AAAc                  $    e Zd ZU ded<   ded<   dS )ChunksAndContentLengthztyping.Iterable[bytes] | Nonechunksz
int | Nonecontent_lengthN)r   r   r   __annotations__r   r   r   rM   rM      s*         ))))r   rM   typing.Any | Nonemethodr.   	blocksizerG   c                     #d}|                                 t          vrd}nd}nt           t          t          f          r&t                     f}t          |d                   }nt           d          rd	 fd} |            }d}n_	 t                     } f}|j	        }nD# t          $ r7 	 t                     }d}n!# t          $ r t          d           dw xY wY nw xY wt          ||          S )
aR  Takes the HTTP request method, body, and blocksize and
    transforms them into an iterable of chunks to pass to
    socket.sendall() and an optional 'Content-Length' header.

    A 'Content-Length' of 'None' indicates the length of the body
    can't be determined so should use 'Transfer-Encoding: chunked'
    for framing instead.
    Nr   readr'   typing.Iterable[bytes]c               3     K   t          t          j                  } 	                               }|sd S | r|                    d          }|V  5)NTzutf-8)r-   io
TextIOBaserU   r2   )r2   	datablockrS   r6   s     r   chunk_readablez&body_to_chunks.<locals>.chunk_readable   sd      bm44F  IIi00	  E : ) 0 0 9 9I r   zO'body' must be a bytes-like object, file-like object, or iterable. Instead was )rN   rO   )r'   rV   )upper_METHODS_NOT_EXPECTING_BODYr-   r.   bytesr	   lenhasattr
memoryviewnbytes	TypeErroriterrM   )r6   rR   rS   rN   rO   r[   mvs   ` `    r   body_to_chunksrf      sq   $ |<<>>!<<<NN!NN 
D3,	'	' ''4.."VAY 
v		 "'		  		  		  		  		  		  		   !!	'D!!B WFYNN  		 		 		d!%   A8<A A   			 "OOOOs*   B) )
C*4CC*C$$C*)C*)NNNNNN)r   r   r    r!   r"   r#   r$   r#   r%   r#   r&   r   r'   r(   )r6   r7   r8   r9   r'   r9   )r6   r@   rA   rB   r'   rC   )r6   rQ   rR   r.   rS   rG   r'   rM   )&
__future__r   rX   typingbase64r   enumr   
exceptionsr   utilr	   TYPE_CHECKINGr
   SKIP_HEADER	frozensetSKIPPABLE_HEADERSr1   
brotlicffi_unused_module_brotliImportErrorbrotli	zstandard_unused_module_zstdr   r   r   rP   UnionrG   rB   r]   r5   r?   r<   
NamedTuplerM   rf   r   r   r   <module>ry      s   " " " " " " " 				              . . . . . .      	  "IGGGHH  /22222 / / /....../
 uOO  	 	 	D	++++ wOO  	 	 	D	    t    (8'= = = = =l3(8#89  WVV  #59!!#'!%N N N N Nb   (
 
 
 
<    V.   
CP CP CP CP CP CPsB   A A" 	AA" AA" "A*)A*.A8 8B ?B 