Ë
    eº0fJ%  ã                  ó  — 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mZ ddlmZmZ dd	lmZ dd
lmZ ddlmZ ej0                  rddlmZmZ  ej8                  e«      Ze	 G d„ d«      «       Z G d„ de«      Z y)é    )ÚannotationsN)Úcontextmanager)Ú	dataclass)ÚHTTPException)ÚBytesIOÚIOBaseé   )ÚInvalidHeaderÚTimeoutError)ÚBaseHTTPResponse)ÚRetryé   )ÚEmscriptenRequest)ÚBaseHTTPConnectionÚBaseHTTPSConnectionc                  ó6   — e Zd ZU ded<   ded<   ded<   ded<   y	)
ÚEmscriptenResponseÚintÚstatus_codezdict[str, str]ÚheaderszIOBase | bytesÚbodyr   ÚrequestN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úbC:\Users\user\Documents\project_loop\venv\Lib\site-packages\urllib3/contrib/emscripten/response.pyr   r      s   … àÓØÓØ
ÓØÔr   r   c                  óJ  ‡ — e Zd Z	 	 d	 	 	 	 	 dˆ fd„Zedd„«       Zej                  dd„«       Zedd„«       Zedd„«       Zej                  dd„«       Z	 d	 	 	 	 	 dd„Z	dd„Z
	 	 	 d	 	 	 	 	 	 	 dd	„Z	 	 d	 	 	 	 	 dd
„Zdd„Zdd„Zedd„«       Zdd„Zdd„Zed d„«       Zˆ xZS )!ÚEmscriptenHttpResponseWrapperc                ó"  •— d | _         d | _        || _        || _        || _        d| _        t        ‰| �  |j                  |j                  |ddd¬«       | j                  | j                  j                  j                  «      | _        d| _        y )NFr   Ú T)r   ÚstatusÚrequest_urlÚversionÚreasonÚdecode_content)Ú_poolÚ_bodyÚ	_responseÚ_urlÚ_connectionÚ_closedÚsuperÚ__init__r   r   Ú_init_lengthr   ÚmethodÚlength_remainingÚlength_is_certain)ÚselfÚinternal_responseÚurlÚ
connectionÚ	__class__s       €r   r0   z&EmscriptenHttpResponseWrapper.__init__   s�   ø€ ð ˆŒ
ØˆŒ
Ø*ˆŒØˆŒ	Ø%ˆÔØˆŒÜ‰ÑØ%×-Ñ-Ø$×0Ñ0ØØØØð 	ô 	
ð !%× 1Ñ 1°$·.±.×2HÑ2H×2OÑ2OÓ PˆÔØ!&ˆÕr   c                ó   — | j                   S ©N©r,   ©r5   s    r   r7   z!EmscriptenHttpResponseWrapper.url6   s   € à�y‰yÐr   c                ó   — || _         y r;   r<   )r5   r7   s     r   r7   z!EmscriptenHttpResponseWrapper.url:   s	   € àˆ�	r   c                ó   — | j                   S r;   )r-   r=   s    r   r8   z(EmscriptenHttpResponseWrapper.connection>   s   € à×ÑÐr   c                ó   — | j                   S r;   ©Ú_retriesr=   s    r   Úretriesz%EmscriptenHttpResponseWrapper.retriesB   s   € à�}‰}Ðr   c                ó   — || _         y r;   rA   )r5   rC   s     r   rC   z%EmscriptenHttpResponseWrapper.retriesF   s   € ð  ˆ�r   c              #  óD   K  — 	 | j                  ||¬«      }|r|–— nyŒ­w)a_  
        A generator wrapper for the read() method. A call will block until
        ``amt`` bytes have been read from the connection or until the
        connection is closed.

        :param amt:
            How much of the content to read. The generator will return up to
            much data per iteration, but may return less. This is particularly
            likely when using compressed data. However, the empty string will
            never be returned.

        :param decode_content:
            If True, will attempt to decode the body based on the
            'content-encoding' header.
        )Úamtr(   N©Úread)r5   rF   r(   Údatas       r   Ústreamz$EmscriptenHttpResponseWrapper.streamK   s-   è ø€ ð$ Ø—9‘9 °^�9ÓDˆDáØ“
àð ùs   ‚ c                ó€  — | j                   j                  d«      }|�\	 |j                  d«      D �ch c]  }t        |«      ’Œ }}t	        |«      dkD  rt        d|z  «      ‚|j                  «       }|dk  rd }nd }| j                  dv sd| j                  cxk  rdk  sn |d	k(  rd}|S c c}w # t        $ r d }Y Œ@w xY w)
Nzcontent-lengthú,r   z8Content-Length contained multiple unmatching values (%s)r   )éÌ   i0  éd   éÈ   ÚHEAD)	r   ÚgetÚsplitr   Úlenr
   ÚpopÚ
ValueErrorr$   )r5   Úrequest_methodÚcontent_lengthÚvalÚlengthsÚlengths         r   r1   z*EmscriptenHttpResponseWrapper._init_lengthe   sÜ   € à%)§\¡\×%5Ñ%5Ð6FÓ%GˆàÐ%ð"ð 0>×/CÑ/CÀCÓ/HÖI¨œ3˜s�8ÐI�ÐIÜ�w“< !Ò#Ü'ð1Ø3AñBóð ð !Ÿ™›�ð ˜A’:Ø!‘Fð ˆFð �K‰K˜:Ñ%Ø�d—k‘kÔ' CÔ'Ø Ò'àˆFàˆùò1 Jøô ò Ø’ðús"   ŸB/ ²B*Á.B/ Â*B/ Â/B=Â<B=c                ó(  — | j                   sP| j                  �Dt        | j                  j                  t        «      r!| j                  j                  j
                  ry| j                  «       5  t        | j                  j                  t        «      sYt        | j                  j                  «      | _        d| _	        t        | j                  j                  «      | j                  _        |�Êd}| j                  j                  j                  |«      }| j                  �'t        | j                  t        |«      z
  d«      | _        | j                  r| j                  dk(  st        |«      |k  r$| j                  j                  j                  «        t        j                  t         |«      cd d d «       S | j                  j                  j                  «       }|r|| _        | j                  �'t        | j                  t        |«      z
  d«      | _        t        |«      dk(  s| j                  r3| j                  dk(  r$| j                  j                  j                  «        t        j                  t         |«      cd d d «       S # 1 sw Y   y xY w)Nr   TFr   )r.   r+   Ú
isinstancer   r   ÚclosedÚ_error_catcherrS   r3   r4   r   rH   ÚmaxÚcloseÚtypingÚcastÚbytesr*   )r5   rF   r(   Úcache_contentrI   s        r   rH   z"EmscriptenHttpResponseWrapper.readŠ   sì  € ð �LŠLØ�~‰~Ð%Ü˜4Ÿ>™>×.Ñ.´Ô7¸D¿N¹N×<OÑ<O×<VÒ<Vàà× Ñ Ó"ñ 	0ä˜dŸn™n×1Ñ1´6Ô:Ü(+¨D¯N©N×,?Ñ,?Ó(@�Ô%Ø)-�Ô&ä&-¨d¯n©n×.AÑ.AÓ&B�—‘Ô#Øˆà %�Ø—~‘~×*Ñ*×/Ñ/°Ó4�Ø×(Ñ(Ð4Ü,/°×0EÑ0EÌÈDË	Ñ0QÐSTÓ,U�DÔ)Ø×*Ò*¨t×/DÑ/DÈÒ/IÌcØóOàòOð —N‘N×'Ñ'×-Ñ-Ô/Ü—{‘{¤5¨$Ó/÷%	0ñ 	0ð( —~‘~×*Ñ*×/Ñ/Ó1�Ù Ø!%�D”JØ×(Ñ(Ð4Ü,/°×0EÑ0EÌÈDË	Ñ0QÐSTÓ,U�DÔ)Ü�t“9 ’>Ø×*Ò*¨t×/DÑ/DÈÒ/Ið —N‘N×'Ñ'×-Ñ-Ô/Ü—{‘{¤5¨$Ó/÷=	0÷ 	0ò 	0ús   Á.E JÆ8CJÊJc              #  ó@   K  — 	 | j                  ||«      }|sy |–— Œ­wr;   rG   )r5   rF   r(   rc   s       r   Úread_chunkedz*EmscriptenHttpResponseWrapper.read_chunked·   s+   è ø€ ð Ø—I‘I˜c >Ó2ˆEÙØØŠKð	 ùs   ‚c                óŽ   — | j                   r| j                  sy | j                   j                  | j                  «       d | _        y r;   )r)   r-   Ú	_put_connr=   s    r   Úrelease_connz*EmscriptenHttpResponseWrapper.release_connÃ   s4   € Ø�zŠz ×!1Ò!1Øà�
‰
×Ñ˜T×-Ñ-Ô.ØˆÕr   c                ó$   — | j                  «        y r;   )r`   r=   s    r   Ú
drain_connz(EmscriptenHttpResponseWrapper.drain_connÊ   s   € Ø�
‰
�r   c                óV   — | j                   r| j                   S | j                  d¬«      S )NT)rd   )r*   rH   r=   s    r   rI   z"EmscriptenHttpResponseWrapper.dataÍ   s$   € à�:Š:Ø—:‘:Ðà—9‘9¨4�9Ó0Ð0r   c                ób   — | j                   j                  d«      }t        j                  |«      S )a  
        Parses the body of the HTTP response as JSON.

        To use a custom JSON decoder pass the result of :attr:`HTTPResponse.data` to the decoder.

        This method can raise either `UnicodeDecodeError` or `json.JSONDecodeError`.

        Read more :ref:`here <json>`.
        zutf-8)rI   ÚdecodeÚ_jsonÚloads)r5   rI   s     r   Újsonz"EmscriptenHttpResponseWrapper.jsonÔ   s'   € ð �y‰y×Ñ Ó(ˆÜ�{‰{˜4Ó Ð r   c                ó  — | j                   s}t        | j                  j                  t        «      r$| j                  j                  j                  «        | j                  r!| j                  j                  «        d | _        d| _         y y )NT)r.   r\   r+   r   r   r`   r-   r=   s    r   r`   z#EmscriptenHttpResponseWrapper.closeá   sb   € Ø�|Š|Ü˜$Ÿ.™.×-Ñ-¬vÔ6Ø—‘×#Ñ#×)Ñ)Ô+Ø×ÒØ× Ñ ×&Ñ&Ô(Ø#'�Ô ØˆD�Lð r   c              #  óø  K  — ddl m}m} d}	 d–— d}	 |syt        | j                  j                  t        «      rD| j                  j                  j                  s$| j                  j                  j                  «        | j                  «        yt        | j                  j                  t        «      r2| j                  j                  j                  r| j                  «        yyy# |$ r}t        t	        |«      «      ‚d}~w|$ r}t        t	        |«      «      ‚d}~ww xY w# |syt        | j                  j                  t        «      rD| j                  j                  j                  s$| j                  j                  j                  «        | j                  «        w t        | j                  j                  t        «      r2| j                  j                  j                  r| j                  «        w w w xY w­w)zý
        Catch Emscripten specific exceptions thrown by fetch.py,
        instead re-raising urllib3 variants, so that low-level exceptions
        are not leaked in the high-level api.

        On exit, release the connection back to the pool.
        r   )Ú_RequestErrorÚ_TimeoutErrorFNT)Úfetchrt   ru   r   Ústrr   r\   r+   r   r   r]   r`   ri   )r5   rt   ru   Ú
clean_exitÚes        r   r^   z,EmscriptenHttpResponseWrapper._error_catcherê   sv  è ø€ ÷ 	8àˆ
ð	(Ûð ‰Jñ ô ˜tŸ~™~×2Ñ2´FÔ;Ø ŸN™N×/Ñ/×6Ò6à—N‘N×'Ñ'×-Ñ-Ô/à×!Ñ!Õ#ô
 ˜tŸ~™~×2Ñ2´FÔ;ØŸ™×+Ñ+×2Ò2à×%Ñ%Õ'ð 3ð <øð+ ò 	'Üœs 1›vÓ&Ð&ûØò 	(Ü¤ A£Ó'Ð'ûð	(ûñ
 ô ˜tŸ~™~×2Ñ2´FÔ;Ø ŸN™N×/Ñ/×6Ò6à—N‘N×'Ñ'×-Ñ-Ô/à×!Ñ!Õ#ô
 ˜tŸ~™~×2Ñ2´FÔ;ØŸ™×+Ñ+×2Ò2à×%Ñ%Õ'ð 3ð <üsA   ‚G:ŽC' •CG:Ã'D!Ã,D Ä D!ÄDÄD!Ä!D$ Ä$CG7Ç7G:)NN)r6   r   r7   ú
str | Noner8   ú/BaseHTTPConnection | BaseHTTPSConnection | None)Úreturnrz   )r7   rz   r|   ÚNone)r|   r{   )r|   úRetry | None)rC   r~   r|   r}   )i   N)rF   ú
int | Noner(   úbool | Noner|   z#typing.Generator[bytes, None, None])rV   rz   r|   r   )NNF)rF   r   r(   r€   rd   Úboolr|   rc   )r|   r}   )r|   rc   )r|   z
typing.Any)r|   z"typing.Generator[None, None, None])r   r   r   r0   Úpropertyr7   Úsetterr8   rC   rJ   r1   rH   rf   ri   rk   rI   rq   r`   r   r^   Ú__classcell__)r9   s   @r   r!   r!      s_  ø„ ð ØFJð	'à-ð'ð ð'ð Dõ	'ð. òó ðð 	‡Z�Zòó ðð ò ó ð ð òó ðð ‡^�^ò ó ð ð
 FJðØðØ7Bðà	,óó4#ðN Ø&*Ø#ð	+0àð+0ð $ð+0ð ð	+0ð
 
ó+0ð^ Ø&*ð
àð
ð $ð
ð 
-ó	
ó óð ò1ó ð1ó!ó ð ò)(ó ô)(r   r!   )!Ú
__future__r   rq   ro   Úloggingra   Ú
contextlibr   Údataclassesr   Úhttp.clientr   Úior   r   Ú
exceptionsr
   r   Úresponser   Ú
util.retryr   r   r   ÚTYPE_CHECKINGÚ_base_connectionr   r   Ú	getLoggerr   Úlogr   r!   r   r   r   ú<module>r’      so   ðÝ "ã Û Û Ý %Ý !Ý 6ß ç 5Ý (Ý Ý &à	×ÒßKà€g×Ñ˜Ó!€ð ÷ð ó ðôv(Ð$4õ v(r   