a
     ÑOcí¯  ã                   @   s²  U d 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
 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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* dd
l+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ ddlAmBZBmCZCmDZDmEZEmFZF ddlGmHZH ddlImJZJmKZKmLZLmMZM ddlNmOZO ddlPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZY ddl)mZZZm[Z[m\Z\m]Z] ddl^m_Z_m`Z`maZambZb ddlcmdZd ddlemfZfmgZg ddlhmiZimjZjmkZkmlZlmmZm dZnzddlompZp W n eq�yV   erZpY n0 ejsdddd�G dd„ dƒƒZtetdd�Zueiet evd< edƒZwG d d!„ d!ƒZxG d"d#„ d#eeeewf eew ƒZyG d$d%„ d%eyeC ƒZzG d&d'„ d'eyeH ƒZ{G d(d)„ d)ƒZ|dddddddd*ddd+ddddeXde)j}dddd,œe~emeee~e~f  eeeel eee~  eeS ee€ee~ ee eee eeem eeS eeterf eek e[eeJ ee€ eej� e|d-œd.d/„Z‚dS )0zHTTP Client for asyncio.é    N)Úsuppress)ÚSimpleNamespaceÚTracebackType)ÚAnyÚ	AwaitableÚCallableÚ	CoroutineÚ	FrozenSetÚ	GeneratorÚGenericÚIterableÚListÚMappingÚOptionalÚSetÚTupleÚTypeÚTypeVarÚUnion)ÚCIMultiDictÚ	MultiDictÚMultiDictProxyÚistr)ÚURLé   )ÚhdrsÚhttpÚpayload)ÚAbstractCookieJar)ÚClientConnectionErrorÚClientConnectorCertificateErrorÚClientConnectorErrorÚClientConnectorSSLErrorÚClientErrorÚClientHttpProxyErrorÚClientOSErrorÚClientPayloadErrorÚClientProxyConnectionErrorÚClientResponseErrorÚClientSSLErrorÚContentTypeErrorÚ
InvalidURLÚServerConnectionErrorÚServerDisconnectedErrorÚServerFingerprintMismatchÚServerTimeoutErrorÚTooManyRedirectsÚWSServerHandshakeError)ÚClientRequestÚClientResponseÚFingerprintÚRequestInfoÚ_merge_ssl_params)ÚClientWebSocketResponse)ÚBaseConnectorÚNamedPipeConnectorÚTCPConnectorÚUnixConnector)Ú	CookieJar)	ÚDEBUGÚPY_36Ú	BasicAuthÚTimeoutHandleÚceil_timeoutÚget_env_proxy_for_urlÚget_running_loopÚsentinelÚstrip_auth_from_url)ÚWS_KEYÚHttpVersionÚWebSocketReaderÚWebSocketWriter)ÚWSHandshakeErrorÚ	WSMessageÚ
ws_ext_genÚws_ext_parse)ÚFlowControlDataQueue)ÚTraceÚTraceConfig)ÚFinalÚJSONEncoderÚLooseCookiesÚLooseHeadersÚStrOrURL)r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r8   r:   r;   r9   r7   ÚClientSessionÚClientTimeoutÚrequest)Ú
SSLContextT)Zauto_attribsÚfrozenÚslotsc                   @   sN   e Zd ZU dZee ed< dZee ed< dZee ed< dZ	ee ed< dS )rW   NÚtotalÚconnectÚ	sock_readÚsock_connect)
Ú__name__Ú
__module__Ú__qualname__r\   r   ÚfloatÚ__annotations__r]   r^   r_   © re   re   úE/var/www/html/gsl.tools/lib/python3.9/site-packages/aiohttp/client.pyrW   ‰   s   
rW   i,  ©r\   ÚDEFAULT_TIMEOUTÚ_RetTypec                       s,  e Zd ZdZeg d¢ƒZdZdZdrddddddej	e
eeejdddededdddddœee ee eej ee ee eee  ee eee
 ee ee eee eeee e!f ee  ee!e"f eeeee#e$  e%ddœd	d
„Z&ed  ddœdd„Z'e(�ree)ddœ‡ fdd„Z*e+fe)ddœdd„Z,eee)ddœdd„Z-ee.dœdd„Z/ddddddddddddddddeddddddddœeeee0eef  e)e)ee ee eee  ee ee%ee ee eee eee ee ee"e!f ee ee1 ee2 eee2ee3f  ee ee4 ee% edœdd„Z5e6j7d d!dddddddddddddddd"d#d$œeeee e ee  eeee  ee ee ee0eef  ee ee ee ee2ede3f ee ee1 ee2 ee e%e%d%d&œd'd(„Z8e6j7d d!dddddddddddddddd"d#d$œeeee e ee  eeee  ee ee ee0eef  ee ee ee ee2ede3f ee ee1 ee2 ee e%e%ed&œd)d*„Z9ee d+d,œd-d.„Z:dd/œeee)dd0œd1d2„Z;dd/œeee)dd0œd3d4„Z<dd/œeee)dd0œd5d6„Z=dd7œee)e)dd8œd9d:„Z>dd7œee)e)dd8œd;d<„Z?dd7œee)e)dd8œd=d>„Z@ee)dd?œd@dA„ZAddBœdCdD„ZBeCedBœdEdF„ƒZDeCee dBœdGdH„ƒZEeCedBœdIdJ„ƒZFeCeGe%e%f dBœdKdL„ƒZHeCedBœdMdN„ƒZIeIjJeddOœdPdN„ƒZIeCejdBœdQdR„ƒZKeCe"dBœdSdT„ƒZLeCd+dBœdUdV„ƒZMeCeNeO dBœdWdX„ƒZPeCee dBœdYdZ„ƒZQeCedBœd[d\„ƒZReCedBœd]d^„ƒZSeCeeeTegeUd f f dBœd_d`„ƒZVeCedBœdadb„ƒZWeCedBœdcdd„ƒZXeCe#e$ dBœdedf„ƒZYddBœdgdh„ZZddBœdidj„Z[eee\  ee\ ee] ddkœdldm„Z^d dBœdndo„Z_eee\  ee\ ee] ddkœdpdq„Z`‡  ZaS )srV   z/First-class interface for making HTTP requests.)Ú	_base_urlÚ_source_tracebackÚ
_connectorÚrequote_redirect_urlÚ_loopÚ_cookie_jarÚ_connector_ownerÚ_default_authÚ_versionÚ_json_serializeÚ_requote_redirect_urlÚ_timeoutÚ_raise_for_statusÚ_auto_decompressÚ
_trust_envÚ_default_headersÚ_skip_auto_headersÚ_request_classÚ_response_classÚ_ws_response_classÚ_trace_configsÚ_read_bufsizeNTFé   )Ú	connectorÚloopÚcookiesÚheadersÚskip_auto_headersÚauthÚjson_serializeÚrequest_classÚresponse_classÚws_response_classÚversionÚ
cookie_jarÚconnector_ownerÚraise_for_statusÚread_timeoutÚconn_timeoutÚtimeoutÚauto_decompressÚ	trust_envrm   Útrace_configsÚread_bufsize)Úbase_urlr�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   r�   r‘   r’   r“   rm   r”   r•   Úreturnc                C   s  |d u r|d ur|j }t|ƒ}|d u s0t|tƒr8|| _n"t|ƒ| _| j ¡ | jksZJ dƒ‚|d u rlt|d�}|j |ur~tdƒ‚|| _ | ¡ ržt	 
t d¡¡| _|d u r°t|d�}|| _|d urÊ| j |¡ || _|| _|| _|| _|| _|tu �rRt| _|tu�r$tjdtdd� tj| j|d�| _|d u�r|tj| j|d	�| _tjd
tdd� n*|| _|tu�rjtdƒ‚|d u�r|tdƒ‚|| _|| _ || _!|| _"|| _#|�rªt$|ƒ}nt$ƒ }|| _%|d u�rÖt&dd„ |D ƒƒ| _'nt&ƒ | _'|	| _(|
| _)|| _*|�pøg | _+| j+D ]}| ,¡  �qd S )Nz2Only absolute URLs without path part are supported©r‚   z0Session and connector has to use same event loopr   z8read_timeout is deprecated, use timeout argument insteadé   ©Ú
stacklevelrg   )r]   z8conn_timeout is deprecated, use timeout argument insteadzGread_timeout and timeout parameters conflict, please setup timeout.readzJconn_timeout and timeout parameters conflict, please setup timeout.connectc                 s   s   | ]}t |ƒV  qd S ©N)r   )Ú.0Úire   re   rf   Ú	<genexpr>0  ó    z)ClientSession.__init__.<locals>.<genexpr>)-rn   rC   Ú
isinstancer   rj   Úoriginr:   ÚRuntimeErrorZ	get_debugÚ	tracebackÚextract_stackÚsysÚ	_getframerk   r<   ro   Úupdate_cookiesrl   rp   rq   rr   rs   rD   rh   ru   ÚwarningsÚwarnÚDeprecationWarningÚattrZevolveÚ
ValueErrorrv   rw   rx   rt   r   r   ry   Ú	frozensetrz   r{   r|   r}   r~   Úfreeze)Úselfr–   r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   r�   r‘   r’   r“   rm   r”   r•   Úreal_headersÚtrace_configre   re   rf   Ú__init__Å   sŽ    
ÿþ




ý
ý
ÿ
ÿ


zClientSession.__init__)Úclsr—   c                 C   s   t jd | j¡tdd� d S )Nz6Inheritance class {} from ClientSession is discouragedr™   rš   )r©   rª   Úformatr`   r«   )r´   re   re   rf   Ú__init_subclass__<  s    ÿüzClientSession.__init_subclass__)ÚnameÚvalr—   c                    s2   || j vr tjd |¡tdd� tƒ  ||¡ d S )Nz8Setting custom ClientSession.{} attribute is discouragedr™   rš   )ÚATTRSr©   rª   rµ   r«   ÚsuperÚ__setattr__)r°   r·   r¸   ©Ú	__class__re   rf   r»   F  s    
ÿüzClientSession.__setattr__)Ú	_warningsr—   c                 C   s`   | j s\trd| i}ni }|jd| ›�tfi |¤Ž | ddœ}| jd urP| j|d< | j |¡ d S )NÚsourcezUnclosed client session zUnclosed client session)Zclient_sessionÚmessageZsource_traceback)Úclosedr>   rª   ÚResourceWarningrk   rn   Zcall_exception_handler)r°   r¾   ÚkwargsÚcontextre   re   rf   Ú__del__P  s    

ÿÿ


zClientSession.__del__Ú_RequestContextManager)ÚmethodÚurlrÃ   r—   c                 K   s   t | j||fi |¤ŽƒS )zPerform HTTP request.)rÆ   Ú_request)r°   rÇ   rÈ   rÃ   re   re   rf   rX   ^  s    zClientSession.request)Ú
str_or_urlr—   c                 C   s>   t |ƒ}| jd u r|S | ¡ s*|j d¡s.J ‚| j |¡S d S )Nú/)r   rj   Úis_absoluteÚpathÚ
startswithÚjoin)r°   rÊ   rÈ   re   re   rf   Ú
_build_urld  s
    
zClientSession._build_urlé
   )ÚparamsÚdataÚjsonrƒ   r„   r…   r†   Úallow_redirectsÚmax_redirectsÚcompressÚchunkedÚ	expect100rŽ   Úread_until_eofÚproxyÚ
proxy_authr‘   Ú
verify_sslÚfingerprintÚssl_contextÚsslÚproxy_headersÚtrace_request_ctxr•   )rÇ   rÊ   rÒ   rÓ   rÔ   rƒ   r„   r…   r†   rÕ   rÖ   r×   rØ   rÙ   rŽ   rÚ   rÛ   rÜ   r‘   rÝ   rÞ   rß   rà   rá   râ   r•   r—   c          3      ƒ   s°  ˆ j rtdƒ‚t||||ƒ}|d ur6|d ur6tdƒ‚n|d urNtj|ˆ jd�}t|tƒsl|d urlt	 
dt¡ d}g }ˆ j}ˆ  |¡}ˆ  |¡}zˆ  |¡}W n. tyÊ } zt|ƒ|‚W Y d }~n
d }~0 0 tˆ jƒ} |d urö|D ]}!|  t|!ƒ¡ qâ|d u�r>zt|ƒ}W n0 t�y< } zt|ƒ|‚W Y d }~n
d }~0 0 |tu �rPˆ j}"nt|tƒ�sht|d�}"n|}"tˆ j|"jƒ}#|# ¡ }$|d u �r’ˆ j}‡ ‡fdd„ˆ jD ƒ}%|%D ] }&|& || |¡|¡I d H  �q¬|#  ¡ }'�zh|'��Ì t!|ƒ\}}(|	�r|(�rtd	ƒ‚|	d u �r|(}	|	d u �r ˆ j"}	|d u�rH|	d u�rHt#j$|v �rHtd
ƒ‚ˆ j% &|¡})|d u�rˆt'ƒ }*|* (|¡ |* &|¡}+|+�rˆ|) )|+¡ |d u�rœt|ƒ}n>ˆ j*�rÚt+t,ƒ� t-|ƒ\}}W d   ƒ n1 �sÐ0    Y  ˆ j.||||| ||)|	||||ˆ jˆ j/|||'ˆ |||%d�},znt0|"j1ƒ4 I d H š@ ˆ j2d u�s8J ‚ˆ j2j1|,|%|"d�I d H }-W d   ƒI d H  �q~1 I d H �st0    Y  W n8 t3j4�y¸ }. zt5d 6|¡ƒ|.‚W Y d }.~.n
d }.~.0 0 |-j7d u�sÊJ ‚|-j8d u�sÚJ ‚|-j8j9|'| :¡ dk|ˆ j;|"j<|d� zlzH|, =|-¡I d H }/z|/ |-¡I d H  W n t>�yD   |/ ?¡  ‚ Y n0 W n t>�yf   |- ?¡  ‚ Y n0 W nb t@�y€   ‚ Y nN tA�yÌ }. z4|.jBd u �r¬t|.t3j4ƒ�r¬‚ tC|.jDŽ |.‚W Y d }.~.n
d }.~.0 0 ˆ j% (|/jE|/jF¡ |/jGdv �rž|
�rž|%D ]"}&|& H|| |¡||/¡I d H  �qö|d7 }| I|/¡ |�rX||k�rX|/ ?¡  tJ|d jKtL|ƒƒ‚|/jGdk�rr|/jMt#jNk�sŒ|/jGdv �r°|/jMt#jOk�r°t#jP}d }| Qt#jR¡�r°| St#jR¡ |/jT Qt#jU¡�pÌ|/jT Qt#jV¡}0|0d u �rÞ�qžn|/ W¡  zt|0ˆ jX d�}1W n0 t�y* } zt|0ƒ|‚W Y d }~n
d }~0 0 |1jY}2|2dv�rN|/ ?¡  tdƒ‚n|2�s^| Z|1¡}1| [¡ |1 [¡ k�r‚d }	| St#j$d ¡ |1}d }|/ W¡  �qâ�qž�qâW d   ƒ n1 �s´0    Y  |d u �rÎˆ j\}|�rÜ|/ ]¡  |$d u�r
|/j^d u�r|/j^ _|$j`¡ n|$ `¡  tL|ƒ|/_a|%D ]"}&|& b|| |¡||/¡I d H  �q|/W S  t>�yª } zP|# ?¡  |$�rl|$ `¡  d }$|%D ]"}&|& c|| |¡||¡I d H  �qp‚ W Y d }~n
d }~0 0 d S )NzSession is closedz9data and json parameters can not be used at the same time)ÚdumpszChunk size is deprecated #1615r   rg   c                    s    g | ]}t ˆ ||jˆd �ƒ‘qS ))râ   )rO   Ztrace_config_ctx)r�   r²   ©r°   râ   re   rf   Ú
<listcomp>Å  s   û
ýz*ClientSession._request.<locals>.<listcomp>z<Cannot combine AUTH argument with credentials encoded in URLzTCannot combine AUTHORIZATION header with AUTH argument or credentials encoded in URL)rÒ   r„   r…   rÓ   rƒ   r†   r‹   r×   rØ   rÙ   r‚   r‰   rÛ   rÜ   ÚtimerÚsessionrà   rá   Útraces)rè   r‘   zConnection timeout to host {}ÚHEAD)ræ   Zskip_payloadrÚ   r’   r�   r•   )é-  é.  é/  i3  i4  r   rì   )rê   rë   )Úencoded)r   ÚhttpsÚ z"Can redirect only to http or https)drÁ   r£   r6   r­   r   ZJsonPayloadrs   r¡   Úboolr©   rª   r«   rr   Ú_prepare_headersrÐ   r+   Úsetrz   Úaddr   r   rD   ru   rW   r@   rn   r\   Ústartr   r~   Zsend_request_startZupdate_queryræ   rE   rq   r   ZAUTHORIZATIONro   Zfilter_cookiesr<   r¨   Úloadrx   r   ÚLookupErrorrB   r{   r|   rA   r]   rl   ÚasyncioÚTimeoutErrorr/   rµ   Ú	transportÚprotocolZset_response_paramsÚupperrw   r^   ÚsendÚBaseExceptionÚcloser#   ÚOSErrorÚerrnor%   Úargsrƒ   rÈ   ÚstatusZsend_request_redirectÚappendr0   Úrequest_infoÚtuplerÇ   Ú	METH_HEADÚ	METH_POSTÚMETH_GETÚgetÚCONTENT_LENGTHÚpopr„   ZLOCATIONÚURIÚreleasert   ÚschemerÏ   r¢   rv   rŽ   Ú
connectionZadd_callbackÚcancelZ_historyZsend_request_endZsend_request_exception)3r°   rÇ   rÊ   rÒ   rÓ   rÔ   rƒ   r„   r…   r†   rÕ   rÖ   r×   rØ   rÙ   rŽ   rÚ   rÛ   rÜ   r‘   rÝ   rÞ   rß   rà   rá   râ   r•   Z	redirectsÚhistoryr‹   rÈ   ÚeZskip_headersrž   Zreal_timeoutÚtmÚhandlerè   Útraceræ   Zauth_from_urlZall_cookiesZtmp_cookie_jarZreq_cookiesÚreqÚconnÚexcÚrespZr_urlÚ
parsed_urlr  re   rä   rf   rÉ   l  s¤   #ÿ

 

 

ú	ÿ

ÿþýÿ






,ëÿ>ÿþ
ú	"ÿ
ÿÿ
ÿÿ
ÿ
 


(


ÿÿzClientSession._requestre   g      $@r   i  @ ©rÇ   Ú	protocolsr‘   Úreceive_timeoutÚ	autocloseÚautopingÚ	heartbeatr†   r¢   rÒ   r„   rÛ   rÜ   rà   rÝ   rÞ   rß   rá   r×   Úmax_msg_sizeÚ_WSRequestContextManager)rÈ   rÇ   r  r‘   r  r  r  r   r†   r¢   rÒ   r„   rÛ   rÜ   rà   rÝ   rÞ   rß   rá   r×   r!  r—   c                C   s8   t | j|||||||||	|
|||||||||||d�ƒS )zInitiate websocket connection.r  )r"  Ú_ws_connect)r°   rÈ   rÇ   r  r‘   r  r  r  r   r†   r¢   rÒ   r„   rÛ   rÜ   rà   rÝ   rÞ   rß   rá   r×   r!  re   re   rf   Ú
ws_connect¡  s2    ëÿzClientSession.ws_connectc          *      Ã   sL  |d u rt ƒ }nt |ƒ}tjdtjdtjdi}| ¡ D ]\}}| ||¡ q6t t	 
d¡¡}| ¡ |tj< |r~d |¡|tj< |
d ur�|
|tj< |r¨t|d�}||tj< t||||ƒ}| j||||d|	||||d�
I d H }�z(|jd	k�rt|j|jd
|j|jd�‚|j tjd¡ ¡ dk�r8t|j|jd|j|jd�‚|j tjd¡ ¡ dk�rlt|j|jd|j|jd�‚|j tjd¡}t t |t ¡ ¡ ¡ ¡ }||k�r¼t|j|jd|j|jd�‚d }|�rtj|jv �rdd„ |jtj   d¡D ƒ} | D ]}!|!|v �rô|!} �q�qôd}"|�r’|j tj¡}#|#�rŠzt!|#ƒ\}}"W nH t"�y† }$ z.t|j|j|$j#d |j|jd�|$‚W Y d }$~$n
d }$~$0 0 nd}d}"|j$}%|%d u�s¦J ‚|%j%}&|&d u�sºJ ‚|%j&}'|'d u�sÎJ ‚t'|&d| j(d�}(|& )t*|(|ƒ|(¡ t+|&|'d||"d�})W n t,�y"   | -¡  ‚ Y n&0 | j.|(|)|||||| j(||||"d�S d S )NZ	websocketÚupgradeZ13é   ú,)r×   F)rÒ   r„   rÚ   r†   rÛ   rÜ   rà   rá   ée   zInvalid response status)rÀ   r  r„   rï   zInvalid upgrade headerzInvalid connection headerzInvalid challenge responsec                 S   s   g | ]}|  ¡ ‘qS re   )Ústrip)r�   Úprotore   re   rf   rå   D  s   ÿz-ClientSession._ws_connect.<locals>.<listcomp>r   r€   r˜   T)Zuse_maskr×   Ú
notakeover)r  r   r×   Zclient_notakeover)/r   r   ÚUPGRADEZ
CONNECTIONZSEC_WEBSOCKET_VERSIONÚitemsÚ
setdefaultÚbase64Ú	b64encodeÚosÚurandomÚdecodeZSEC_WEBSOCKET_KEYrÏ   ZSEC_WEBSOCKET_PROTOCOLZORIGINrL   ZSEC_WEBSOCKET_EXTENSIONSr6   rX   r  r1   r  r  r„   r	  ÚlowerZSEC_WEBSOCKET_ACCEPTÚhashlibÚsha1rF   ÚdigestÚsplitrM   rJ   r  r  rú   rù   rN   rn   Ú
set_parserrH   rI   rý   rþ   r}   )*r°   rÈ   rÇ   r  r‘   r  r  r  r   r†   r¢   rÒ   r„   rÛ   rÜ   rà   rÝ   rÞ   rß   rá   r×   r!  r±   Údefault_headersÚkeyÚvalueZsec_keyZextstrr  Zr_keyÚmatchrú   Zresp_protocolsr*  r+  Zcompress_hdrsr  r  Z
conn_protorù   ÚreaderÚwriterre   re   rf   r#  Õ  sþ    ý


öûûû	
û	þ

ûúÿû
ôzClientSession._ws_connectzCIMultiDict[str])r„   r—   c                 C   sh   t | jƒ}|rdt|ttfƒs$t |ƒ}tƒ }| ¡ D ]0\}}||v rP| ||¡ q2|||< | |¡ q2|S )z3Add default headers and transform it to CIMultiDict)r   ry   r¡   r   r   rò   r-  ró   )r°   r„   ÚresultZadded_namesr;  r<  re   re   rf   rñ   …  s    
zClientSession._prepare_headers)rÕ   )rÈ   rÕ   rÃ   r—   c                K   s   t | jtj|fd|i|¤ŽƒS )zPerform HTTP GET request.rÕ   )rÆ   rÉ   r   r  ©r°   rÈ   rÕ   rÃ   re   re   rf   r	  •  s    ÿzClientSession.getc                K   s   t | jtj|fd|i|¤ŽƒS )zPerform HTTP OPTIONS request.rÕ   )rÆ   rÉ   r   ZMETH_OPTIONSrA  re   re   rf   Úoptions�  s    ÿÿÿÿzClientSession.optionsc                K   s   t | jtj|fd|i|¤ŽƒS )zPerform HTTP HEAD request.rÕ   )rÆ   rÉ   r   r  rA  re   re   rf   Úhead§  s    ÿÿÿÿzClientSession.head)rÓ   )rÈ   rÓ   rÃ   r—   c                K   s   t | jtj|fd|i|¤ŽƒS )zPerform HTTP POST request.rÓ   )rÆ   rÉ   r   r  ©r°   rÈ   rÓ   rÃ   re   re   rf   Úpost±  s    ÿzClientSession.postc                K   s   t | jtj|fd|i|¤ŽƒS )zPerform HTTP PUT request.rÓ   )rÆ   rÉ   r   ZMETH_PUTrD  re   re   rf   Úput¹  s    ÿzClientSession.putc                K   s   t | jtj|fd|i|¤ŽƒS )zPerform HTTP PATCH request.rÓ   )rÆ   rÉ   r   Z
METH_PATCHrD  re   re   rf   ÚpatchÁ  s    ÿzClientSession.patch)rÈ   rÃ   r—   c                 K   s   t | jtj|fi |¤ŽƒS )zPerform HTTP DELETE request.)rÆ   rÉ   r   ZMETH_DELETE)r°   rÈ   rÃ   re   re   rf   ÚdeleteÉ  s    zClientSession.delete©r—   c                 Ã   s0   | j s,| jdur&| jr&| j ¡ I dH  d| _dS )zMClose underlying connector.

        Release all acquired resources.
        N)rÁ   rl   rp   rþ   ©r°   re   re   rf   rþ   Í  s    zClientSession.closec                 C   s   | j du p| j jS )z@Is client session closed.

        A readonly property.
        N)rl   rÁ   rJ  re   re   rf   rÁ   ×  s    zClientSession.closedc                 C   s   | j S )z(Connector instance used for the session.©rl   rJ  re   re   rf   r�   ß  s    zClientSession.connectorc                 C   s   | j S )zThe session cookies.)ro   rJ  re   re   rf   rŒ   ä  s    zClientSession.cookie_jarc                 C   s   | j S )z"The session HTTP protocol version.)rr   rJ  re   re   rf   r‹   é  s    zClientSession.versionc                 C   s   | j S )ú)Do URL requoting on redirection handling.)rt   rJ  re   re   rf   rm   î  s    z"ClientSession.requote_redirect_url)r¸   r—   c                 C   s   t jdtdd� || _dS )rL  z=session.requote_redirect_url modification is deprecated #2778r™   rš   N)r©   rª   r«   rt   )r°   r¸   re   re   rf   rm   ó  s    ýc                 C   s   t jdtdd� | jS )zSession's loop.z"client.loop property is deprecatedr™   rš   )r©   rª   r«   rn   rJ  re   re   rf   r‚   ý  s    ÿzClientSession.loopc                 C   s   | j S )zTimeout for the session.)ru   rJ  re   re   rf   r‘     s    zClientSession.timeoutc                 C   s   | j S )z*The default headers of the client session.)ry   rJ  re   re   rf   r„   
  s    zClientSession.headersc                 C   s   | j S )z2Headers for which autogeneration should be skipped)rz   rJ  re   re   rf   r…     s    zClientSession.skip_auto_headersc                 C   s   | j S )z2An object that represents HTTP Basic Authorization)rq   rJ  re   re   rf   r†     s    zClientSession.authc                 C   s   | j S )zJson serializer callable)rs   rJ  re   re   rf   r‡     s    zClientSession.json_serializec                 C   s   | j S )z-Should connector be closed on session closing)rp   rJ  re   re   rf   r�     s    zClientSession.connector_ownerc                 C   s   | j S )zGShould `ClientResponse.raise_for_status()` be called for each response.)rv   rJ  re   re   rf   rŽ   #  s    zClientSession.raise_for_statusc                 C   s   | j S )z7Should the body response be automatically decompressed.)rw   rJ  re   re   rf   r’   *  s    zClientSession.auto_decompressc                 C   s   | j S )zÃ
        Should proxies information from environment or netrc be trusted.

        Information is from HTTP_PROXY / HTTPS_PROXY environment variables
        or ~/.netrc file if present.
        )rx   rJ  re   re   rf   r“   /  s    zClientSession.trust_envc                 C   s   | j S )z7A list of TraceConfig instances used for client tracing)r~   rJ  re   re   rf   r”   9  s    zClientSession.trace_configsc                 C   s
   d| _ dS )zwDetach connector from session without closing the former.

        Session is switched to closed state anyway.
        NrK  rJ  re   re   rf   Údetach>  s    zClientSession.detachc                 C   s   t dƒ‚d S )NzUse async with instead)Ú	TypeErrorrJ  re   re   rf   Ú	__enter__E  s    zClientSession.__enter__)Úexc_typeÚexc_valÚexc_tbr—   c                 C   s   d S rœ   re   ©r°   rP  rQ  rR  re   re   rf   Ú__exit__H  s    zClientSession.__exit__c                 Ã   s   | S rœ   re   rJ  re   re   rf   Ú
__aenter__Q  s    zClientSession.__aenter__c                 Ã   s   |   ¡ I d H  d S rœ   )rþ   rS  re   re   rf   Ú	__aexit__T  s    zClientSession.__aexit__)N)br`   ra   rb   Ú__doc__r®   r¹   rk   rl   rÔ   rã   r2   r3   r7   r   ÚHttpVersion11rD   r   rU   r8   r÷   ÚAbstractEventLooprS   rT   r   Ústrr?   rR   r   rG   r   rð   r   rc   ÚobjectrW   r   rP   Úintr³   r¶   r=   r   r»   r©   rÅ   rX   r   rÐ   r   ÚbytesrY   r4   r   rÉ   r   r  r$  r#  rñ   r	  rB  rC  rE  rF  rG  rH  rþ   ÚpropertyrÁ   r�   rŒ   r   r‹   rm   Úsetterr‚   r‘   r„   r	   r   r…   r†   r‡   r�   r   r   rŽ   r’   r“   r”   rM  rO  rý   r   rT  rU  rV  Ú__classcell__re   re   r¼   rf   rV   ¤   sB  ÿ þç



æw
þä

ã  ;éè8éè 1ÿþ	ÿþÿþÿþ	ÿþ	ÿþ
	þ	
û	
ûrV   c                   @   s–   e Zd ZdZeddef ddœdd„Zdddœdd	„Zeddœd
d„Z	ddœdd„Z
eedef dœdd„Zeedef dœdd„Zedœdd„ZdS )Ú_BaseRequestContextManager©Ú_coroÚ_respúasyncio.Future[Any]N)Úcoror—   c                 C   s
   || _ d S rœ   )rc  )r°   rf  re   re   rf   r³   a  s    z#_BaseRequestContextManager.__init__)Úargr—   c                 C   s   | j  |¡S rœ   )rc  rü   ©r°   rg  re   re   rf   rü   d  s    z_BaseRequestContextManager.sendc                 C   s   | j  |¡ d S rœ   )rc  Úthrowrh  re   re   rf   ri  g  s    z _BaseRequestContextManager.throwrI  c                 C   s
   | j  ¡ S rœ   )rc  rþ   rJ  re   re   rf   rþ   j  s    z _BaseRequestContextManager.closec                 C   s   | j  ¡ }|S rœ   )rc  Ú	__await__)r°   Úretre   re   rf   rj  m  s    
z$_BaseRequestContextManager.__await__c                 C   s   |   ¡ S rœ   )rj  rJ  re   re   rf   Ú__iter__q  s    z#_BaseRequestContextManager.__iter__c                 Ã   s   | j I d H | _| jS rœ   rb  rJ  re   re   rf   rU  t  s    z%_BaseRequestContextManager.__aenter__)r`   ra   rb   Ú	__slots__r   ri   r³   rü   rý   ri  rþ   r
   r   rj  rl  rU  re   re   re   rf   ra  ]  s   ra  c                   @   s4   e Zd ZdZeee  ee ee ddœdd„ZdS )rÆ   re   N©rP  r  Útbr—   c                 Ã   s   | j  ¡  d S rœ   )rd  r  ©r°   rP  r  ro  re   re   rf   rV  |  s    z _RequestContextManager.__aexit__©	r`   ra   rb   rm  r   r   rý   r   rV  re   re   re   rf   rÆ   y  s   
ûrÆ   c                   @   s4   e Zd ZdZeee  ee ee ddœdd„ZdS )r"  re   Nrn  c                 Ã   s   | j  ¡ I d H  d S rœ   )rd  rþ   rp  re   re   rf   rV  �  s    z"_WSRequestContextManager.__aexit__rq  re   re   re   rf   r"  Š  s   
ûr"  c                   @   s^   e Zd ZdZeddef eddœdd„Zedœdd	„Ze	e
e  e	e e	e dd
œdd„ZdS )Ú_SessionRequestContextManager©rc  rd  Ú_sessionre  N)rf  rç   r—   c                 C   s   || _ d | _|| _d S rœ   rs  )r°   rf  rç   re   re   rf   r³   š  s    z&_SessionRequestContextManager.__init__rI  c                 Ã   sB   z| j I d H | _W n$ ty6   | j ¡ I d H  ‚ Y n0 | jS d S rœ   )rc  rd  rý   rt  rþ   rJ  re   re   rf   rU  £  s    z(_SessionRequestContextManager.__aenter__rn  c                 Ã   s,   | j d usJ ‚| j  ¡  | j ¡ I d H  d S rœ   )rd  rþ   rt  rp  re   re   rf   rV  ¬  s    
z'_SessionRequestContextManager.__aexit__)r`   ra   rb   rm  r   r3   rV   r³   rU  r   r   rý   r   rV  re   re   re   rf   rr  –  s   ü	
ûrr  rÑ   F)rÒ   rÓ   rÔ   r„   r…   r†   rÕ   rÖ   r×   rØ   rÙ   rŽ   rÚ   rÛ   rÜ   r‘   rƒ   r‹   r�   r•   r‚   )rÇ   rÈ   rÒ   rÓ   rÔ   r„   r…   r†   rÕ   rÖ   r×   rØ   rÙ   rŽ   rÚ   rÛ   rÜ   r‘   rƒ   r‹   r�   r•   r‚   r—   c                C   sd   d}|du rd}t |dd�}t||||||d�}t|j| |||||||||	|
|||||||d�|ƒS )aµ  Constructs and sends a request.

    Returns response object.
    method - HTTP method
    url - request url
    params - (optional) Dictionary or bytes to be sent in the query
      string of the new request
    data - (optional) Dictionary, bytes, or file-like object to
      send in the body of the request
    json - (optional) Any json compatible python object
    headers - (optional) Dictionary of HTTP Headers to send with
      the request
    cookies - (optional) Dict object to send with the request
    auth - (optional) BasicAuth named tuple represent HTTP Basic Auth
    auth - aiohttp.helpers.BasicAuth
    allow_redirects - (optional) If set to False, do not follow
      redirects
    version - Request HTTP version.
    compress - Set to True if request has to be compressed
       with deflate encoding.
    chunked - Set to chunk size for chunked transfer encoding.
    expect100 - Expect 100-continue response from server.
    connector - BaseConnector sub-class instance to support
       connection pooling.
    read_until_eof - Read response until eof if response
       does not have Content-Length header.
    loop - Optional event loop.
    timeout - Optional ClientTimeout settings structure, 5min
       total timeout by default.
    Usage::
      >>> import aiohttp
      >>> resp = await aiohttp.request('GET', 'http://python.org/')
      >>> resp
      <ClientResponse(python.org/) [200]>
      >>> data = await resp.read()
    FNT)r‚   Zforce_close)r‚   rƒ   r‹   r‘   r�   r�   )rÒ   rÓ   rÔ   r„   r…   r†   rÕ   rÖ   r×   rØ   rÙ   rŽ   rÚ   rÛ   rÜ   r•   )r:   rV   rr  rÉ   )rÇ   rÈ   rÒ   rÓ   rÔ   r„   r…   r†   rÕ   rÖ   r×   rØ   rÙ   rŽ   rÚ   rÛ   rÜ   r‘   rƒ   r‹   r�   r•   r‚   r�   rç   re   re   rf   rX   ·  sF    >ú	îërX   )ƒrW  r÷   r/  r5  rÔ   r1  r¦   r¤   r©   Ú
contextlibr   Útypesr   r   Útypingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r¬   Z	multidictr   r   r   r   Zyarlr   rï   r   r   r   Úabcr   Zclient_exceptionsr   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   Zclient_reqrepr2   r3   r4   r5   r6   Z	client_wsr7   r�   r8   r9   r:   r;   Ú	cookiejarr<   Zhelpersr=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   Zhttp_websocketrJ   rK   rL   rM   ZstreamsrN   ÚtracingrO   rP   ZtypedefsrQ   rR   rS   rT   rU   Ú__all__rà   rY   ÚImportErrorr[  ÚsrW   rh   rd   ri   rV   ra  rÆ   r"  rr  rX  rZ  rð   r\  rY  rX   re   re   re   rf   Ú<module>   s¾   HT,(
       @ %è

ç