§
    ¡”j«   ã                  óè  — U d dl mZ d dl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	 ej        dk    rd dlmZ nd dlm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#	 	 	 	 	 	 d4d5d!„Z$d6d&„Z%d7d+„Z& G d,„ d-ej'        ¦  «        Z(d8d3„Z)dS )9é    )ÚannotationsN)Ú	b64encode)ÚEnumé   )ÚUnrewindableBodyErroré   )Úto_bytes)ÚFinalz@@@SKIP_HEADER@@@)úaccept-encodingÚhostú
user-agentzgzip,deflatez,br)é   é   )Úzstdz,zstdc                  ó   — e Zd ZdZdS )Ú_TYPE_FAILEDTELLr   N)Ú__name__Ú
__module__Ú__qualname__Útoken© ó    úc/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/urllib3/util/request.pyr   r   ,   s   € € € € € Ø€E€E€Er   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 )aˆ  
    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 ``backports.zstd`` package for Python before 3.14)
        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_headersr8   <   s  € ðd !€GØð 5Ý�o¥sÑ+Ô+ð 	.ØÝ˜­Ñ.Ô.ð 	.Ø!Ÿhšh Ñ7Ô7ˆOˆOå-ˆOØ%4ˆÐ!Ñ"àð +Ø *ˆ�Ñàð -Ø ,ˆ�Ñàð 
àG•Y˜z×0Ò0°Ñ;Ô;Ñ<Ô<×CÒCÑEÔEÐGÐGð 	�Ñ ð ð 
àM•YÐ/×6Ò6°yÑ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   )r9   r;   s     r   Úset_file_positionrB   Ž   so   € ð €Ý�D˜#ÑÔÐÐÝ	��v˜tÑ	$Ô	$Ð	0ð	Ø—)’)‘+”+ˆCˆCøÝð 	ð 	ð 	õ ˆCˆCˆCð	øøøð
 €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@   r0   ÚintrA   r   r   Ú
ValueErrorÚtype)r9   rD   Ú	body_seekÚes       r   r?   r?   ¢   sÈ   € õ ˜˜f dÑ+Ô+€IØÐ¥¨HµcÑ!:Ô!:Ðð	ØˆI�hÑÔÐÐÐøÝð 	ð 	ð 	Ý'Ø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   rP   rP   À   s*   € € € € € € Ø)Ð)Ð)Ñ)ØÐÐÑÐÐr   rP   útyping.Any | NoneÚmethodr1   Ú	blocksizerJ   c                óü  ‡ ‡— ‰ €#d}|                      ¦   «         t          vrd}nÈd}nÅt          ‰ t          t          f¦  «        r&t          ‰ ¦  «        f}t          |d         ¦  «        }nƒt          ‰ 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)r0   ÚioÚ
TextIOBaserX   r5   )r5   Ú	datablockrV   r9   s     €€r   Úchunk_readablez&body_to_chunks.<locals>.chunk_readableæ   sd   øè è € Ý ¥b¤mÑ4Ô4ˆFð Ø ŸIšI iÑ0Ô0�	Ø ð Ø�EØð :Ø )× 0Ò 0°Ñ 9Ô 9�IØ���ð r   zO'body' must be a bytes-like object, file-like object, or iterable. Instead was )rQ   rR   )r*   rY   )ÚupperÚ_METHODS_NOT_EXPECTING_BODYr0   r1   Úbytesr	   ÚlenÚhasattrÚ
memoryviewÚnbytesÚ	TypeErrorÚiterrP   )r9   rU   rV   rQ   rR   r^   Úmvs   ` `    r   Úbody_to_chunksri   Å   sq  øø€ ð$ €|ØˆØ�<Š<‰>Œ>Õ!<Ð<Ð<ØˆNˆNà!ˆNˆNõ 
�D�3¥˜,Ñ	'Ô	'ð &'Ý˜4‘.”.Ð"ˆÝ˜V AœY™œˆˆõ 
��vÑ	Ô	ð !'ð	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð  �Ñ!Ô!ˆØˆˆð	'å˜DÑ!Ô!ˆBð �WˆFØœYˆNˆNøõ ð 		ð 		ð 		ðå˜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+   )r9   r:   r;   r<   r*   r<   )r9   rC   rD   rE   r*   rF   )r9   rT   rU   r1   rV   rJ   r*   rP   )*Ú
__future__r   r[   ÚsysÚtypingÚbase64r   Úenumr   Ú
exceptionsr   Úutilr	   ÚTYPE_CHECKINGr
   ÚSKIP_HEADERÚ	frozensetÚSKIPPABLE_HEADERSr4   Ú
brotlicffiÚ_unused_module_brotliÚImportErrorÚbrotliÚversion_infoÚcompressionr   Ú_unused_module_zstdÚ	backportsr   r   r   rS   ÚUnionrJ   rE   r`   r8   rB   r?   Ú
NamedTuplerP   ri   r   r   r   ú<module>r      s±  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð à	Ôð ØÐÐÐÐÐð "€Ø�IÐGÐGÐGÑHÔHÐ à €ðð/Ø2Ð2Ð2Ð2Ð2øØð /ð /ð /Ø.Ð.Ð.Ð.Ð.Ð.ð/øøøð
 �uÑ€O€Oøð ð 	ð 	ð 	Ø€Dð	øøøð
Ø
Ô˜7Ò"Ð"Ø;Ð;Ð;Ð;Ð;Ð;Ð;à9Ð9Ð9Ð9Ð9Ð9ð �wÑ€O€Oøð ð 	ð 	ð 	Ø€Dð	øøøðð ð ð ð �tñ ô ð ð (8Ô'=€Ð =Ð =Ð =Ñ =à”l 3Ð(8Ð#8Ô9Ð ð WÐVÐVÐ ð #Ø59Ø!Ø!Ø#'Ø!%ðOð Oð Oð Oð Oðdð ð ð ð(
ð 
ð 
ð 
ð<ð ð ð ð ˜VÔ.ñ ô ð ð
BPð BPð BPð BPð BPð BPsB   ÁA ÁA& Á	AÁA& ÁAÁA& Á&A.Á-A.Á2B ÂBÂB