o
    RÊÆhäš  ã                   @   sX  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
mZmZ d dlmZmZmZ d dlmZmZ d dlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z! d dl"Z"d dl#m$Z$m%Z%m&Z&m'Z' d dl(m)Z) dd	l*m+Z+m,Z,m-Z-m.Z.m/Z/ dd
l0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 ddl9m:Z: ddl;m<Z< ddl,m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZE ddl-mFZFmGZGmHZHmIZImJZJ ddlKmLZL ddlMmNZN ddlOmPZPmQZQmRZRmSZSmTZT zd dlUZUd dlUmVZV W n eWyû   dZUeXZVY nw dZYe�rddlZm[Z[ ddl\m]Z] ddl^m_Z_ e `d¡Zae `d¡Zbdecfdd„Zde"jedddd�G dd „ d ƒƒZfe"jedddd�G d!d"„ d"ƒƒZgG d#d$„ d$ƒZheUdu�rXeUjVeiehejdƒfZknejdƒZkd%e d&ed' ehdf d(eei d)ed& d*eel de d&ed' ehdf f
d+d,„Zme"jedddd-�G d.d/„ d/ƒƒZnd0ecd1ecdeifd2d3„ZoG d4d5„ d5ƒZpG d6d7„ d7e?ƒZqdS )8é    N)Úmd5Úsha1Úsha256)ÚCookieErrorÚMorselÚSimpleCookie)ÚMappingProxyTypeÚTracebackType)ÚTYPE_CHECKINGÚAnyÚCallableÚDictÚIterableÚListÚLiteralÚMappingÚOptionalÚTupleÚTypeÚUnionÚcast)ÚCIMultiDictÚCIMultiDictProxyÚ	MultiDictÚMultiDictProxy)ÚURLé   )ÚhdrsÚhelpersÚhttpÚ	multipartÚpayload)ÚAbstractStreamWriter)ÚClientConnectionErrorÚClientOSErrorÚClientResponseErrorÚContentTypeErrorÚ
InvalidURLÚServerFingerprintMismatch©Ú
HAS_BROTLI)ÚFormData)	ÚBaseTimerContextÚ	BasicAuthÚHeadersMixinÚ	TimerNoopÚbasicauth_from_netrcÚnetrc_from_envÚnoopÚreifyÚ
set_result)ÚSERVER_SOFTWAREÚHttpVersionÚHttpVersion10ÚHttpVersion11ÚStreamWriter)Úclient_logger)ÚStreamReader)ÚDEFAULT_JSON_DECODERÚJSONDecoderÚLooseCookiesÚLooseHeadersÚ
RawHeaders)Ú
SSLContext)ÚClientRequestÚClientResponseÚRequestInfoÚFingerprint)ÚClientSession)Ú
Connection)ÚTracez[^-!#$%&'*+.^_`|~0-9a-zA-Z]z!^application/(?:[\w.+-]+?\+)?jsonÚreturnc                   C   s   t rdS dS )Nzgzip, deflate, brzgzip, deflater)   © rJ   rJ   úb/var/www/html/HyperOracle/crypto_trader/venv/lib/python3.10/site-packages/aiohttp/client_reqrep.pyÚ_gen_default_accept_encoding^   ó   rL   T)Úauto_attribsÚfrozenÚslotsc                   @   s.   e Zd ZU ee ed< ded< ee ed< dS )ÚContentDispositionÚtypezMappingProxyType[str, str]Ú
parametersÚfilenameN)Ú__name__Ú
__module__Ú__qualname__r   ÚstrÚ__annotations__rJ   rJ   rJ   rK   rQ   b   s   
 rQ   c                   @   sJ   e Zd ZU eed< eed< ded< e ¡ Zeed< ej	defdd„ƒZ
d	S )
rD   ÚurlÚmethodúCIMultiDictProxy[str]ÚheadersÚreal_urlrI   c                 C   ó   | j S ©N)rZ   ©ÚselfrJ   rJ   rK   Úreal_url_defaultp   ó   zRequestInfo.real_url_defaultN)rU   rV   rW   r   rY   rX   ÚattrÚibr^   Údefaultrc   rJ   rJ   rJ   rK   rD   i   s   
 rD   c                   @   sP   e Zd ZeeedœZdeddfdd„Ze	defdd„ƒZ
d	ejddfd
d„ZdS )rE   )é   é   é    ÚfingerprintrI   Nc                 C   sH   t |ƒ}| j |¡}|stdƒ‚|tu s|tu rtdƒ‚|| _|| _d S )Nzfingerprint has invalid lengthz8md5 and sha1 are insecure and not supported. Use sha256.)ÚlenÚHASHFUNC_BY_DIGESTLENÚgetÚ
ValueErrorr   r   Ú	_hashfuncÚ_fingerprint)rb   rk   Ú	digestlenÚhashfuncrJ   rJ   rK   Ú__init__|   s   ÿ
zFingerprint.__init__c                 C   r_   r`   )rq   ra   rJ   rJ   rK   rk   ˆ   rd   zFingerprint.fingerprintÚ	transportc                 C   s`   |  d¡sd S |  d¡}|jdd�}|  |¡ ¡ }|| jkr.|  d¡^}}}t| j|||ƒ‚d S )NÚ
sslcontextÚ
ssl_objectT)Úbinary_formÚpeername)Úget_extra_infoÚgetpeercertrp   Údigestrq   r(   )rb   ru   ÚsslobjÚcertÚgotÚhostÚportÚ_rJ   rJ   rK   ÚcheckŒ   s   


þzFingerprint.check)rU   rV   rW   r   r   r   rm   Úbytesrt   Úpropertyrk   ÚasyncioÚ	Transportrƒ   rJ   rJ   rJ   rK   rE   u   s    ýrE   ÚsslrA   FÚ
verify_sslÚssl_contextrk   c                 C   s¨   |d ur|st jdtdd� | d urtdƒ‚d} |d ur.t jdtdd� | d ur,tdƒ‚|} |d urFt jdtdd� | d urBtdƒ‚t|ƒ} t| tƒsRtd | ¡ƒ‚| S )	Nz/verify_ssl is deprecated, use ssl=False insteadé   ©Ú
stacklevelzNverify_ssl, ssl_context, fingerprint and ssl parameters are mutually exclusiveFz2ssl_context is deprecated, use ssl=context insteadzCfingerprint is deprecated, use ssl=Fingerprint(fingerprint) insteadzFssl should be SSLContext, bool, Fingerprint or None, got {!r} instead.)	ÚwarningsÚwarnÚDeprecationWarningro   rE   Ú
isinstanceÚSSL_ALLOWED_TYPESÚ	TypeErrorÚformat)rˆ   r‰   rŠ   rk   rJ   rJ   rK   Ú_merge_ssl_params�   sN   ýÿýÿýÿ
þr•   )rN   rP   rO   c                   @   sf   e Zd ZU eed< ee ed< eed< ee	de
d ef ed< ee ed< ee ed< ee ed	< dS )
ÚConnectionKeyr€   r�   Úis_sslNFrˆ   ÚproxyÚ
proxy_authÚproxy_headers_hash)rU   rV   rW   rX   rY   r   ÚintÚboolr   rA   r   rE   r   r-   rJ   rJ   rJ   rK   r–   Ò   s   
 r–   Úresponse_content_typeÚexpected_content_typec                 C   s   |dkrt  | ¡d uS || v S )Núapplication/json)Újson_reÚmatch)r�   rž   rJ   rJ   rK   Ú_is_expected_content_typeß   s   r¢   c                0   @   s’  e Zd ZejejejejhZej	ej
ejhZe e¡ ejh¡Zejdejeƒ iZdZdZdZdZdZddeƒ dddejdddddddddddddddœdededeeeef  d	ee  d
e!e de"dee# dee$ dej%dee dee& de&dee'j( dee)d  dee dee$ dee* ded de+e,e-d e.df dee  dee/d  de&dee f.d d!„Z0dbd"e1d#dfd$d%„Z2e3d#ed& fd'd(„ƒZ4e4j5d)ed& d#dfd*d(„ƒZ4d#e&fd+d,„Z6e3d#e+d-de-d e.f fd.d/„ƒZ7e3d#e8fd0d1„ƒZ9e3d#efd2d3„ƒZ:e3d#ee; fd4d5„ƒZ<e3d#e=fd6d7„ƒZ>ded#dfd8d9„Z?de+ej%ef d#dfd:d;„Z@d	ee  d#dfd<d=„ZAd
e!e d#dfd>d?„ZBdee# d#dfd@dA„ZCde"d#dfdBdC„ZDdcdDdE„ZEdddee$ de&d#dfdFdG„ZFdHe"d#dfdIdJ„ZGdddKe&d#dfdLdM„ZHdee dee$ dee  d#dfdNdO„ZId#e&fdPdQ„ZJd)eKdRdSd#dfdTdU„ZLdedVdW„ZMdcdXdY„ZNdcdZd[„ZOdeded\ePd#dfd]d^„ZQdeded	d_d#dfd`da„ZRdS )frB   z*/*ó    NF)Úparamsr]   Úskip_auto_headersÚdataÚcookiesÚauthÚversionÚcompressÚchunkedÚ	expect100ÚloopÚresponse_classr˜   r™   ÚtimerÚsessionrˆ   Úproxy_headersÚtracesÚ	trust_envÚserver_hostnamer[   rZ   r¤   r]   r¥   r¦   r§   r¨   r©   rª   r«   r¬   r­   r®   rC   r˜   r™   r¯   r°   rF   rˆ   r±   r²   rH   r³   r´   c                C   s¶  |d u rt  ¡ }t |¡}|rtd|›d�ƒ‚t|tƒs J |ƒ‚t|ttd ƒfƒs-J |ƒ‚td|ƒ| _	|rJt
|jƒ}| |¡}| |j¡ | |¡}|| _| d ¡| _| ¡ | _|| _|
| _|| _d | _|d u rkt}n|}|| _|d urv|ntƒ | _|| _|| _| ¡ r�t t  !d¡¡| _"|  #|	¡ |  $|¡ |  %|¡ |  &|¡ |  '|¡ |  (|¡ |  )||¡ |  *|||¡ |  +|¡ |d usÇ| j| j,vrË|  -¡  |  .|¡ |d u rÖg }|| _/d S )Nz+Method cannot contain non-token characters z# (found at least {match.group()!r})rF   r   )0r†   Úget_event_loopÚ_CONTAINS_CONTROL_CHAR_REÚsearchro   r‘   r   rR   r   Ú_sessionr   ÚqueryÚ
with_queryÚextendÚoriginal_urlÚwith_fragmentrZ   Úupperr[   r«   rª   r­   ÚlengthrC   r®   r/   Ú_timerÚ_sslr´   Ú	get_debugÚ	tracebackÚextract_stackÚsysÚ	_getframeÚ_source_tracebackÚupdate_versionÚupdate_hostÚupdate_headersÚupdate_auto_headersÚupdate_cookiesÚupdate_content_encodingÚupdate_authÚupdate_proxyÚupdate_body_from_dataÚGET_METHODSÚupdate_transfer_encodingÚupdate_expect_continueÚ_traces)rb   r[   rZ   r¤   r]   r¥   r¦   r§   r¨   r©   rª   r«   r¬   r­   r®   r˜   r™   r¯   r°   rˆ   r±   r²   r³   r´   r¡   ÚqÚurl2Úreal_response_classrJ   rJ   rK   rt     s\   

ÿ












zClientRequest.__init__r‚   rI   c                 C   ó
   d | _ d S r`   ©Ú_ClientRequest__writer©rb   r‚   rJ   rJ   rK   Ú__reset_writerU  ó   
zClientRequest.__reset_writerúasyncio.Task[None]c                 C   r_   r`   rÙ   ra   rJ   rJ   rK   Ú_writerX  rd   zClientRequest._writerÚwriterc                 C   ó:   | j d ur| j  | j¡ || _ |d ur| | j¡ d S d S r`   )rÚ   Úremove_done_callbackÚ_ClientRequest__reset_writerÚadd_done_callback©rb   rà   rJ   rJ   rK   rß   \  ó   
ÿc                 C   s   | j jdv S )N)ÚhttpsÚwss)rZ   Úschemera   rJ   rJ   rK   r—   d  rM   zClientRequest.is_sslrA   c                 C   r_   r`   )rÁ   ra   rJ   rJ   rK   rˆ   g  rd   zClientRequest.sslc                 C   sL   | j }|rttdd„ | ¡ D ƒƒƒ}nd }t| j| j|  ¡ | j| j	| j
|ƒS )Nc                 s   s   � | ]	\}}||fV  qd S r`   rJ   )Ú.0ÚkÚvrJ   rJ   rK   Ú	<genexpr>o  s   € z/ClientRequest.connection_key.<locals>.<genexpr>)r±   ÚhashÚtupleÚitemsr–   r€   r�   r—   rˆ   r˜   r™   )rb   r±   ÚhrJ   rJ   rK   Úconnection_keyk  s   ùzClientRequest.connection_keyc                 C   s   | j j}|d us
J ‚|S r`   )rZ   Úraw_host)rb   ÚretrJ   rJ   rK   r€   |  s   zClientRequest.hostc                 C   s   | j jS r`   )rZ   r�   ra   rJ   rJ   rK   r�   ‚  s   zClientRequest.portc                 C   s   t | jƒ}t| j| j|| jƒS r`   )r   r]   rD   rZ   r[   r¼   )rb   r]   rJ   rJ   rK   Úrequest_info†  s   
zClientRequest.request_infoc                 C   s:   |j st|ƒ‚|j|j}}|rt ||pd¡| _dS dS )z8Update destination host, port and connection type (ssl).Ú N)ró   r'   ÚuserÚpasswordr   r-   r¨   )rb   rZ   Úusernamerø   rJ   rJ   rK   rÉ   ‹  s   ÿzClientRequest.update_hostc                 C   sj   t |tƒr0dd„ | dd¡D ƒ}zt t|d ƒt|d ƒ¡}W n ty/   td|› �ƒd‚w || _dS )zdConvert request version to two elements tuple.

        parser HTTP version '1.1' => (1, 1)
        c                 S   s   g | ]}|  ¡ ‘qS rJ   )Ústrip)rê   ÚpartrJ   rJ   rK   Ú
<listcomp>œ  s    z0ClientRequest.update_version.<locals>.<listcomp>Ú.r   r   z#Can not parse http version number: N)r‘   rX   Úsplitr   r6   r›   ro   r©   )rb   r©   rì   rJ   rJ   rK   rÈ   –  s   
 ÿþÿ
zClientRequest.update_versionc                 C   sÄ   t ƒ | _tt| jjƒ}t |¡rd|› d�}| d¡}| jj	dur0| j 
¡ s0|dt| jj	ƒ 7 }|| jtj< |r^t|tttfƒrD| ¡ }|D ]\}}| ¡ dkrV|| j|< qF| j ||¡ qFdS dS )zUpdate request headers.ú[ú]rý   Nú:r€   )r   r]   r   rX   rZ   ró   r   Úis_ipv6_addressÚrstripr�   Úis_default_portr   ÚHOSTr‘   Údictr   r   rð   ÚlowerÚadd)rb   r]   ÚnetlocÚkeyÚvaluerJ   rJ   rK   rÊ   ¥  s"   

÷zClientRequest.update_headersc                 C   sv   t dd„ t|ƒD ƒƒ| _| j ¡ }| | j¡ | j ¡ D ]\}}||vr+| j ||¡ qt	j
|vr9t| jt	j
< d S d S )Nc                 s   s   � | ]}|d fV  qd S r`   rJ   )rê   ÚhdrrJ   rJ   rK   rí   ¿  s   € 
ÿz4ClientRequest.update_auto_headers.<locals>.<genexpr>)r   Úsortedr¥   r]   Úcopyr»   ÚDEFAULT_HEADERSrð   r  r   Ú
USER_AGENTr5   )rb   r¥   Úused_headersr  ÚvalrJ   rJ   rK   rË   ¾  s   
ÿ
€
ÿz!ClientRequest.update_auto_headersc                 C   s¾   |sdS t ƒ }tj| jv r| | j tjd¡¡ | jtj= t|tƒr'| ¡ }n|}|D ]$\}}t|t	ƒrK| |j
t	ƒ ¡}| |j
|j|j¡ |||< q+|||< q+|jddd� ¡ | jtj< dS )zUpdate request cookies header.Nrö   ú;)ÚheaderÚsep)r   r   ÚCOOKIEr]   Úloadrn   r‘   r   rð   r   r
  Úsetr  Úcoded_valueÚoutputrú   )rb   r§   ÚcÚiter_cookiesÚnamer  Úmrsl_valrJ   rJ   rK   rÌ   Ì  s    





zClientRequest.update_cookiesc                 C   sj   |du rdS | j  tjd¡ ¡ }|r| jrtdƒ‚dS | jr3t| jtƒs'd| _| j| j tj< d| _	dS dS )zSet request content encoding.Nrö   z9compress can not be set if Content-Encoding header is setÚdeflateT)
r]   rn   r   ÚCONTENT_ENCODINGr  rª   ro   r‘   rX   r«   )rb   r¦   ÚencrJ   rJ   rK   rÍ   å  s   ÿÿ
üz%ClientRequest.update_content_encodingc                 C   s‚   | j  tjd¡ ¡ }d|v r| jrtdƒ‚dS | jr,tj| j v r$tdƒ‚d| j tj< dS tj| j vr?tt	| j
ƒƒ| j tj< dS dS )z!Analyze transfer-encoding header.rö   r«   zDchunked can not be set if "Transfer-Encoding: chunked" header is setz6chunked can not be set if Content-Length header is setN)r]   rn   r   ÚTRANSFER_ENCODINGr  r«   ro   ÚCONTENT_LENGTHrX   rl   Úbody)rb   ÚterJ   rJ   rK   rÒ   ö  s    ÿÿÿÿz&ClientRequest.update_transfer_encodingc                 C   s˜   |du r| j }|du r2|r2| jjdur2tƒ }t t¡� t|| jjƒ}W d  ƒ n1 s-w   Y  |du r8dS t|t	j
ƒsBtdƒ‚| ¡ | jtj< dS )zSet basic auth.Nz%BasicAuth() tuple is required instead)r¨   rZ   r€   r1   Ú
contextlibÚsuppressÚLookupErrorr0   r‘   r   r-   r“   Úencoder]   r   ÚAUTHORIZATION)rb   r¨   r³   Ú	netrc_objrJ   rJ   rK   rÎ     s   ÿzClientRequest.update_authr$  c                 C   sÞ   |d u rd S t |tƒr|ƒ }z
tjj|d d�}W n tjy'   t|ƒƒ }Y nw || _| jsMtj	| j
vrM|j}|d u r?d| _ntj	| j
vrMt|ƒ| j
tj	< |j
sRJ ‚|j
 ¡ D ]\}}|| j
v raqW|| jv rgqW|| j
|< qWd S )N)ÚdispositionT)r‘   r+   r!   ÚPAYLOAD_REGISTRYrn   r(  r$  r«   r   r#  r]   ÚsizerX   rð   r¥   )rb   r$  r.  r
  r  rJ   rJ   rK   rÐ     s2   
ÿ


ûz#ClientRequest.update_body_from_dataÚexpectc                 C   sF   |r	d| j tj< n| j  tjd¡ ¡ dkrd}|r!| j ¡ | _d S d S )Nz100-continuerö   T)r]   r   ÚEXPECTrn   r  r­   Úcreate_futureÚ	_continue)rb   r/  rJ   rJ   rK   rÓ   >  s   ÿz$ClientRequest.update_expect_continuec                 C   s.   |rt |tjƒstdƒ‚|| _|| _|| _d S )Nz,proxy_auth must be None or BasicAuth() tuple)r‘   r   r-   ro   r˜   r™   r±   )rb   r˜   r™   r±   rJ   rJ   rK   rÏ   G  s
   
zClientRequest.update_proxyc                 C   sL   | j tk rdS | j tkr| j tj¡dkrdS dS | j tj¡dkr$dS dS )NFú
keep-aliveTÚclose)r©   r7   r]   rn   r   Ú
CONNECTIONra   rJ   rJ   rK   Ú
keep_aliveS  s   

zClientRequest.keep_aliveÚconnrG   c              
   Ã   sš  �| j dur!z| ¡ I dH  | j I dH  W n tjy    Y dS w |j}|dus*J ‚z.t| jtjƒr<| j 	|¡I dH  nt| jt
tfƒrI| jf| _| jD ]
}| 	|¡I dH  qLW ng ty— } z3|jdu rqt|tjƒrq| |¡ nt|jd| j ƒ}||_||_| |¡ W Y d}~dS W Y d}~dS d}~w tjy¨   | ¡ I dH  Y dS  ty¿ } z| |¡ W Y d}~dS d}~ww | ¡ I dH  | ¡  dS )z-Support coroutines that yields bytes objects.Nz!Can not write request body for %s)r2  Údrainr†   ÚCancelledErrorÚprotocolr‘   r$  r!   ÚPayloadÚwriter„   Ú	bytearrayÚOSErrorÚerrnoÚTimeoutErrorÚset_exceptionr$   rZ   Ú__context__Ú	__cause__Ú	write_eofÚ	ExceptionÚstart_timeout)rb   rà   r7  r:  ÚchunkÚexcÚnew_excrJ   rJ   rK   Úwrite_bytesa  sJ   €
ÿ

€ÿù€€ÿzClientRequest.write_bytesc           	      Ã   sî  �| j tjkr&| jj}|d usJ ‚t |¡rd|› d�}|› d| jj› �}n| jr3|  	¡ s3t
| jƒ}n| jj}| jjrC|d| jj 7 }|j}|d usLJ ‚t|| jt | j| j | j¡t | j| j | j¡d�}| jrn| | j¡ | jd urw| ¡  | j | jv r�tj| jvr�tj| jvr�d| jtj< | j tj¡}|s«|  ¡ r¤| jt kr£d}n| jt!kr«d}|d urµ|| jtj< d	j"| j || jd
�}| #|| j¡I d H  | j $|  %||¡¡| _&| j'}|d usÝJ ‚|| j | j(| j&| j)| j*| j+| j,| j| j-d�	| _.| j.S )Nrÿ   r   r  Ú?)Úon_chunk_sentÚon_headers_sentzapplication/octet-streamr3  r4  z {0} {1} HTTP/{v.major}.{v.minor})rì   )rà   Úcontinue100r¯   rõ   r²   r­   r°   )/r[   r   ÚMETH_CONNECTrZ   ró   r   r  r�   r˜   r—   rX   Úraw_pathÚraw_query_stringr:  r9   r­   Ú	functoolsÚpartialÚ_on_chunk_request_sentÚ_on_headers_request_sentrª   Úenable_compressionr«   Úenable_chunkingÚPOST_METHODSÚCONTENT_TYPEr¥   r]   rn   r5  r6  r©   r7   r8   r”   Úwrite_headersÚcreate_taskrJ  rß   r®   r¼   r2  rÀ   rõ   rÔ   r¸   Úresponse)	rb   r7  Úconnect_hostÚpathr:  rà   Ú
connectionÚstatus_liner®   rJ   rJ   rK   ÚsendŠ  sz   €
ÿÿú

€

ÿ÷zClientRequest.sendc                 Ã   sN   �| j d ur%t tj¡� | j I d H  W d   ƒ d S 1 sw   Y  d S d S r`   )rß   r&  r'  r†   r9  ra   rJ   rJ   rK   r4  Û  s   €
"ÿÿzClientRequest.closec                 C   s:   | j d ur| j ¡ s| j  ¡  | j  | j¡ d | _ d S d S r`   )rß   r­   Ú	is_closedÚcancelrâ   rã   ra   rJ   rJ   rK   Ú	terminateà  s   



üzClientRequest.terminaterG  c                 Ã   ó&   �| j D ]}| |||¡I d H  qd S r`   )rÔ   Úsend_request_chunk_sent)rb   r[   rZ   rG  ÚtracerJ   rJ   rK   rT  ç  s   €
ÿz$ClientRequest._on_chunk_request_sentzCIMultiDict[str]c                 Ã   re  r`   )rÔ   Úsend_request_headers)rb   r[   rZ   r]   rg  rJ   rJ   rK   rU  ë  s   €
ÿz&ClientRequest._on_headers_request_sentr`   ©rI   N)F)r7  rG   rI   rC   )SrU   rV   rW   r   ÚMETH_GETÚ	METH_HEADÚMETH_OPTIONSÚ
METH_TRACErÑ   Ú
METH_PATCHÚ	METH_POSTÚMETH_PUTrX  ÚunionÚMETH_DELETEÚALL_METHODSÚACCEPTÚACCEPT_ENCODINGrL   r  r$  r¨   r\  rÚ   r2  Ú	frozensetr   r8   rX   r   r   r   r?   r   r   r>   r-   r6   rœ   r†   ÚAbstractEventLoopr   r,   r   rA   r   rE   r   rt   Úobjectrã   r…   rß   Úsetterr—   rˆ   r–   rò   r€   r›   r�   rD   rõ   rÉ   rÈ   rÊ   rË   rÌ   rÍ   rÒ   rÎ   rÐ   rÓ   rÏ   r6  r"   rJ  ra  r4  rd  r„   rT  rU  rJ   rJ   rJ   rK   rB   ç   s   üþçþýûúùø	÷
öõôóòñ
ðïîíìëê
éè
çS 
"	þýü
ûÿÿ
þ
)
Q
ÿÿÿþrB   c                   @   s  e Zd ZU dZee ed< dZeed< dZ	ee
 ed< dZeed< dZee
 ed< dZeed< dZdZeej ed< d	Zd
ZdZde
deddded dededed dejddddfdd„Zdodeddfdd„Z e!ded fdd„ƒZ"e"j#ded ddfd d„ƒZ"e$defd!d"„ƒZ%e$defd#d$„ƒZ&e$defd%d&„ƒZ'e$de
fd'd(„ƒZ(e$dpd*d+„ƒZ)e$defd,d-„ƒZ*e$defd.d/„ƒZ+e$dee, fd0d1„ƒZ-e.fd2e/ddfd3d4„Z0de
fd5d6„Z1e!ded7 fd8d9„ƒZ2e$de3d: fd;d<„ƒZ4e$dqd>d?„ƒZ5drdAdB„Z6dsdCdD„Z7e!de8fdEdF„ƒZ9dsdGdH„Z:de/fdIdJ„Z;e!de8fdKdL„ƒZ<dsdMdN„Z=dsdOdP„Z>dsdQdR„Z?dsdSdT„Z@dsdUdV„ZAdsdWdX„ZBdeCfdYdZ„ZDde
fd[d\„ZEdtd^ee
 d_e
de
fd`da„ZFdeGdbdcœd^ee
 ddeHdeee
 de/fdfdg„ZIdudhdi„ZJdjeeKeL  dkeeL dleeM ddfdmdn„ZNdS )vrC   Nr©   ÚstatusÚreasonÚcontentÚ_headersÚ_raw_headersrÇ   TFr[   rZ   rà   rÞ   rN  zasyncio.Future[bool]r¯   rõ   r²   rH   r­   r°   rF   rI   c          
      C   s¼   t |tƒsJ ‚|| _tƒ | _|| _| d ¡| _d | _|| _	|| _
d| _d| _|| _|d ur/|ntƒ | _i | _|| _|| _|	| _|	d u rIdd„ | _n|	j| _| ¡ r\t t d¡¡| _d S d S )NTrJ   c                  W   s   dS )Núutf-8rJ   )r‚   rJ   rJ   rK   Ú<lambda>.  s    z)ClientResponse.__init__.<locals>.<lambda>r   )r‘   r   r[   r   r§   Ú	_real_urlr½   Ú_urlÚ_bodyrß   r2  Ú_closedÚ_historyÚ_request_infor/   rÀ   Ú_cacherÔ   Ú_loopr¸   Ú_resolve_charsetrÂ   rÃ   rÄ   rÅ   rÆ   rÇ   )
rb   r[   rZ   rà   rN  r¯   rõ   r²   r­   r°   rJ   rJ   rK   rt     s.   þÿzClientResponse.__init__r‚   c                 C   rØ   r`   ©Ú_ClientResponse__writerrÛ   rJ   rJ   rK   rÜ   4  rÝ   zClientResponse.__reset_writerc                 C   r_   r`   rŠ  ra   rJ   rJ   rK   rß   7  rd   zClientResponse._writerc                 C   rá   r`   )r‹  râ   Ú_ClientResponse__reset_writerrä   rå   rJ   rJ   rK   rß   ;  ræ   c                 C   r_   r`   )r‚  ra   rJ   rJ   rK   rZ   C  rd   zClientResponse.urlc                 C   s   t jdtdd� | jS )NzDeprecated, use .url #1654é   rŒ   )rŽ   r�   r�   r‚  ra   rJ   rJ   rK   Úurl_objG  s   zClientResponse.url_objc                 C   r_   r`   )r�  ra   rJ   rJ   rK   r^   L  rd   zClientResponse.real_urlc                 C   s   | j jd usJ ‚| j jS r`   )r‚  r€   ra   rJ   rJ   rK   r€   P  s   zClientResponse.hostr\   c                 C   r_   r`   )r}  ra   rJ   rJ   rK   r]   U  rd   zClientResponse.headersc                 C   r_   r`   )r~  ra   rJ   rJ   rK   Úraw_headersY  rd   zClientResponse.raw_headersc                 C   r_   r`   )r†  ra   rJ   rJ   rK   rõ   ]  rd   zClientResponse.request_infoc                 C   sF   | j  tj¡}|d u rd S t |¡\}}t|ƒ}t |¡}t|||ƒS r`   )	r}  rn   r   ÚCONTENT_DISPOSITIONr    Úparse_content_dispositionr   Úcontent_disposition_filenamerQ   )rb   ÚrawÚdisposition_typeÚ
params_dctr¤   rT   rJ   rJ   rK   Úcontent_dispositiona  s   
z"ClientResponse.content_dispositionÚ	_warningsc                 C   s„   | j rd S | jd ur>| j ¡  |  ¡  | j ¡ r@d| i}|jd| ›�tfi |¤Ž | ddœ}| jr6| j|d< | j 	|¡ d S d S d S )NÚsourcezUnclosed response zUnclosed response)Úclient_responseÚmessageÚsource_traceback)
r„  Ú_connectionÚreleaseÚ_cleanup_writerrˆ  rÂ   r�   ÚResourceWarningrÇ   Úcall_exception_handler)rb   r—  ÚkwargsÚcontextrJ   rJ   rK   Ú__del__k  s   




özClientResponse.__del__c                 C   s`   t  ¡ }t| jƒ}| jr| j dd¡ d¡}nd}td || j	|¡|d� t| j
|d� | ¡ S )NÚasciiÚbackslashreplaceÚNonez<ClientResponse({}) [{} {}]>)Úfile)ÚioÚStringIOrX   rZ   r{  r)  ÚdecodeÚprintr”   rz  r]   Úgetvalue)rb   ÚoutÚascii_encodable_urlÚascii_encodable_reasonrJ   rJ   rK   Ú__repr__{  s"   
ÿþÿüzClientResponse.__repr__rG   c                 C   r_   r`   )rœ  ra   rJ   rJ   rK   r_  �  rd   zClientResponse.connection)rC   .c                 C   r_   )z2A sequence of of responses, if redirects occurred.)r…  ra   rJ   rJ   rK   Úhistory‘  s   zClientResponse.historyú/MultiDictProxy[MultiDictProxy[Union[str, URL]]]c                 C   sô   d  | j dg ¡¡}|sttƒ ƒS tƒ }t d|¡D ][}t d|¡}|d u r'q| ¡ \}}| d¡dd … }tƒ }|D ]}	t d|	tj	¡}|d u rJq;| ¡ \}
}}}| 
|
|¡ q;| d|¡}
| 
d	| j  t|ƒ¡¡ | 
t|
ƒt|ƒ¡ qt|ƒS )
Nz, Úlinkz	,(?=\s*<)z\s*<(.*)>(.*)r  r   z%^\s*(\S*)\s*=\s*(['\"]?)(.*?)(\2)\s*$ÚrelrZ   )Újoinr]   Úgetallr   r   Úrerþ   r¡   ÚgroupsÚMr  rn   rZ   r   rX   )rb   Ú	links_strÚlinksr  r¡   rZ   Ú
params_strr¤   r³  Úparamr
  r‚   r  rJ   rJ   rK   r»  –  s*   
zClientResponse.linksr_  c                 Ã   sf  �d| _ |j| _|| _| j�S 	 z| j}| ¡ I dH \}}W n tjy: } zt| j	| j
|j|j|jd�|‚d}~ww |jdk sJ|jdksJ|jdkrKn| jdurYt| jdƒ d| _qW d  ƒ n1 sdw   Y  | | j¡ |j| _|j| _|j| _|j| _|j| _|| _| j tjd¡D ]"}z| j |¡ W qŽ ty° } zt  d	|¡ W Y d}~qŽd}~ww | S )
zStart response processing.FTN©rz  rš  r]   éd   éÇ   ée   rJ   z!Can not load response cookies: %s)!r„  r:  Ú	_protocolrœ  rÀ   Úreadr   ÚHttpProcessingErrorr%   rõ   r±  Úcoderš  r]   r2  r4   Úon_eofÚ_response_eofr©   rz  r{  r}  r�  r~  r|  r¶  r   Ú
SET_COOKIEr§   r  r   r:   Úwarning)rb   r_  r:  rš  r!   rH  r  rJ   rJ   rK   Ústartº  sX   €ûú€ÿ	
íð€ÿzClientResponse.startc                 C   sH   | j rd S | jd ur| jjd ur| jjjrd S |  ¡  d| _ |  ¡  d S ©NT)r„  rœ  r:  ÚupgradedÚ_release_connectionrž  ra   rJ   rJ   rK   rÇ  í  s   
ÿzClientResponse._response_eofc                 C   r_   r`   )r„  ra   rJ   rJ   rK   Úclosedÿ  rd   zClientResponse.closedc                 C   s@   | j s|  ¡  d| _| jd u s| j ¡ rd S |  ¡  |  ¡  d S rË  )Ú	_releasedÚ_notify_contentr„  rˆ  rb  rž  rÍ  ra   rJ   rJ   rK   r4    s   zClientResponse.closec                 C   s*   | j s|  ¡  d| _|  ¡  |  ¡  tƒ S rË  )rÏ  rÐ  r„  rž  rÍ  r2   ra   rJ   rJ   rK   r�    s   zClientResponse.releasec                 C   s
   d| j kS )zºReturns ``True`` if ``status`` is less than ``400``, ``False`` if not.

        This is **not** a check for ``200 OK`` but a check that the response
        status is under 400.
        i�  )rz  ra   rJ   rJ   rK   Úok  s   
zClientResponse.okc                 C   s<   | j s| jd us
J ‚|  ¡  t| j| j| j| j| jd�‚d S )Nr¾  )rÑ  r{  r�  r%   rõ   r±  rz  r]   ra   rJ   rJ   rK   Úraise_for_status!  s   ûüzClientResponse.raise_for_statusc                    sD   ˆ j d ur ˆ jd u rˆ j  ¡  d ˆ _ d S ˆ j ‡ fdd„¡ d S d S )Nc                    s   ˆ   ¡ S r`   )rÍ  )Úfra   rJ   rK   r€  4  s    z4ClientResponse._release_connection.<locals>.<lambda>)rœ  rß   r�  rä   ra   rJ   ra   rK   rÍ  .  s   



ûz"ClientResponse._release_connectionc                 Ã   ó$   �| j d ur| j I d H  |  ¡  d S r`   )rß   rÍ  ra   rJ   rJ   rK   Ú_wait_released6  ó   €
zClientResponse._wait_releasedc                 C   s   | j d ur
| j  ¡  d | _d S r`   )rß   rc  r¸   ra   rJ   rJ   rK   rž  ;  s   


zClientResponse._cleanup_writerc                 C   s.   | j }|r| ¡ d u r| tdƒ¡ d| _d S )NúConnection closedT)r|  Ú	exceptionrA  r#   rÏ  )rb   r|  rJ   rJ   rK   rÐ  @  s   
zClientResponse._notify_contentc                 Ã   rÔ  r`   )rß   r�  ra   rJ   rJ   rK   Úwait_for_closeF  rÖ  zClientResponse.wait_for_closec                 Ã   s„   �| j du r1z| j ¡ I dH | _ | jD ]}| | j| j| j ¡I dH  qW n ty0   |  ¡  ‚ w | j	r8t
dƒ‚|  ¡ I dH  | j S )zRead response payload.Nr×  )rƒ  r|  rÃ  rÔ   Úsend_response_chunk_receivedr[   rZ   ÚBaseExceptionr4  rÏ  r#   rÕ  )rb   rg  rJ   rJ   rK   rÃ  K  s"   €

ÿÿþzClientResponse.readc                 C   s¦   | j  tjd¡ ¡ }t |¡}|j d¡}|r2t 	t
¡� t |¡jW  d   ƒ S 1 s-w   Y  |jdkrC|jdksA|jdkrCdS | jd u rLtdƒ‚|  | | j¡S )Nrö   ÚcharsetÚapplicationÚjsonÚrdapr  z7Cannot compute fallback encoding of a not yet read body)r]   rn   r   rY  r  r   Úparse_mimetyperS   r&  r'  r(  ÚcodecsÚlookupr  rR   Úsubtyperƒ  ÚRuntimeErrorr‰  )rb   ÚctypeÚmimetypeÚencodingrJ   rJ   rK   Úget_encoding]  s   

 ÿ

ÿzClientResponse.get_encodingÚstrictrç  Úerrorsc                 Ã   s:   �| j du r|  ¡ I dH  |du r|  ¡ }| j j||d�S )z!Read response payload and decode.N)rê  )rƒ  rÃ  rè  rª  )rb   rç  rê  rJ   rJ   rK   Útextt  s   €
ÿzClientResponse.textrŸ   )rç  ÚloadsÚcontent_typerì  rí  c                Ã   s†   �| j du r|  ¡ I dH  |r+| j tjd¡ ¡ }t||ƒs+t| j	| j
d| | jd�‚| j  ¡ }|s4dS |du r<|  ¡ }|| |¡ƒS )zRead and decodes JSON response.Nrö   z3Attempt to decode JSON with unexpected mimetype: %s)rš  r]   )rƒ  rÃ  r]   rn   r   rY  r  r¢   r&   rõ   r±  rú   rè  rª  )rb   rç  rì  rí  rå  ÚstrippedrJ   rJ   rK   rÞ  €  s$   €

ú
	zClientResponse.jsonc                 Ã   s   �| S r`   rJ   ra   rJ   rJ   rK   Ú
__aenter__   s   €zClientResponse.__aenter__Úexc_typeÚexc_valÚexc_tbc                 Ã   s   �|   ¡  |  ¡ I d H  d S r`   )r�  rÙ  )rb   rð  rñ  rò  rJ   rJ   rK   Ú	__aexit__£  s   €	zClientResponse.__aexit__r`   )rI   r\   )rI   r²  )r_  rG   rI   rC   ri  )Nré  )rI   rC   )OrU   rV   rW   r©   r   r6   rY   rz  r›   r{  rX   r|  r;   r}  r   r~  r@   rœ  rÇ   rÃ   ÚStackSummaryr„  rÏ  r‹  r   r,   rD   r   r†   rw  rt   rx  rŒ  r…   rß   ry  r3   rZ   rŽ  r^   r€   r]   r�  rõ   rQ   r–  rŽ   r   r£  r°  r_  r   r±  r»  rÊ  rÇ  rœ   rÎ  r4  r�  rÑ  rÒ  rÍ  rÕ  rž  rÐ  rÙ  r„   rÃ  rè  rë  r<   r=   rÞ  rï  r   rÛ  r	   ró  rJ   rJ   rJ   rK   rC   ò  sÊ   
 þýûúùø	÷
öõ
ô,	
#
3







ûýüû
ú
 
þýüûrC   )rr†   rá  r&  rR  r¨  r·  rÅ   rÃ   rŽ   Úhashlibr   r   r   Úhttp.cookiesr   r   r   Útypesr   r	   Útypingr
   r   r   r   r   r   r   r   r   r   r   r   r   re   Ú	multidictr   r   r   r   Úyarlr   rö   r   r   r   r    r!   Úabcr"   Úclient_exceptionsr#   r$   r%   r&   r'   r(   Úcompression_utilsr*   Úformdatar+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   Úlogr:   Ústreamsr;   Útypedefsr<   r=   r>   r?   r@   rˆ   rA   ÚImportErrorrx  Ú__all__ÚclientrF   Ú	connectorrG   ÚtracingrH   Úcompiler¶   r    rX   rL   ÚsrQ   rD   rE   rœ   rR   r’   r„   r•   r–   r¢   rB   rC   rJ   rJ   rJ   rK   Ú<module>   s–    < ,þ


"ÿþýü
û5ÿÿ
þ    