o
    GEDi0                  1   @   s0  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 zddlnZoW n epy)   ddlqZoY nw dZrzddlsmtZt W n epy@   euZtY nw ejvddddG dd dZwewddZxeiew eyd< edZzeeCe{ge|f Z}d eCd!e{d"e|fd#d$Z~G d%d& d&ZG d'd( d(eeeezf eez ZG d)d* d*eeC ZG d+d, d,eeH ZG d-d. d.Zdddddddd/ddd0ddddeXde)jdddd1d2e|d3emd4eee|e|f  d5ed6ed7eel d8eee|  d9eeS d:ed;ed<ee| d=ee d>ed?ee d@edAeem dBeeS dCeeweuf dDeek dEe[dFeeJ dGee dHeej d"ef0dIdJZdS )Kz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)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`    rf   rf   ]/var/www/www-root/data/www/ovozai.pdev.uz/venv/lib/python3.10/site-packages/aiohttp/client.pyrW      s
   
 rW   i,  r]   DEFAULT_TIMEOUT_RetTyperesponsebodyreturnc                 C   s.   t |d pd}|dkrtjdtdd |S )Nencodingzutf-8zAutomatic charset detection will be removed in 3.9, see: https://docs.aiohttp.org/en/stable/client_advanced.html#character-set-detection   
stacklevel)chardetdetectwarningswarnDeprecationWarning)rk   rl   retrf   rf   rg   "_default_fallback_charset_resolver   s   rx   c                7       s  e Zd ZdZeg dZdZdZ	dddddddej	e
eeejdddededddddeddee d	ee d
eej dee dee deee  dee dedee
 dee dee dedee dedede e!e"f dee! de e"e#f dedededee$e%  de&de'd df2d!d"Z(d#ed  d dfd$d%Z)e*rd&ed'e+d df fd(d)Z,e-fd*e+d dfd+d,Z.d-ed.ed/e+d d0fd1d2Z/d3ed e0fd4d5Z1ddddddddd6dddddddedddddddd7d-ed3ed8ee2eef  d9e+d:e+dee dee deee  dee d;ed<e&d=ee d>ee d?edee d@edAee dBee de e#e"f dCee dDee3 dEee4 dFee e4ee5f  dGee dHee6 dee& d ef6dIdJZ7e8j9dKdLddddddddddddddddMdNdOd.ed-edPee de!dQee! dRedSedTee! dee dUee d8ee2eef  dee dAee dBee dFe e4ede5f dCee dDee3 dEee4 dGee d=e&dVe&d dWf,dXdYZ:e8j9dKdLddddddddddddddddMdNdOd.ed-edPee de!dQee! dRedSedTee! dee dUee d8ee2eef  dee dAee dBee dFe e4ede5f dCee dDee3 dEee4 dGee d=e&dVe&d ef,dZd[Z;dee d d\fd]d^Z<dd_d.ed;ed/e+d d0fd`daZ=dd_d.ed;ed/e+d d0fdbdcZ>dd_d.ed;ed/e+d d0fdddeZ?ddfd.ed9e+d/e+d d0fdgdhZ@ddfd.ed9e+d/e+d d0fdidjZAddfd.ed9e+d/e+d d0fdkdlZBd.ed/e+d d0fdmdnZCddodpZDeEd efdqdrZFeEd ee fdsdtZGeEd efdudvZHeEd eIe&e&f fdwdxZJeEd efdydzZKeKjLd'ed dfd{dzZKeEd ejfd|d}ZMeEd e#fd~dZNeEdddZOeEd ePeQ fddZReEd ee fddZSeEd efddZTeEd efddZUeEd e eeVegeWd f f fddZXeEd efddZYeEd efddZZeEd e$e% fddZ[dddZ\dddZ]deee^  dee^ dee_ d dfddZ`dddZadeee^  dee^ dee_ d dfddZb  ZcS )rV   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_envr|   trace_configsread_bufsizefallback_charset_resolverbase_urlr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r|   r   r   r   rm   c                C   s
  |d u r|d ur|j }t|}|d u st|tr|| _nt|| _| j | jks-J d|d u r6t|d}|j |ur?td|| _ | rOt	
td| _|d u rXt|d}|| _|d ure| j| || _|| _|| _|| _|| _|tu rt| _|turtjdtdd tj| j|d| _|d urtj| j|d	| _tjd
tdd n|| _|turtd|d urtd|| _|| _ || _!|| _"|| _#|rt$|}nt$ }|| _%|d urt&dd |D | _'nt& | _'|	| _(|
| _)|| _*|pg | _+| 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   rp   rh   )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irf   rf   rg   	<genexpr>H  s    z)ClientSession.__init__.<locals>.<genexpr>).r}   rC   
isinstancer   ry   originr:   RuntimeError	get_debug	tracebackextract_stacksys	_getframerz   r<   r~   update_cookiesr{   r   r   r   r   rD   ri   r   rt   ru   rv   attrevolve
ValueErrorr   r   r   r   r   r   r   	frozensetr   r   r   r   r   freeze_resolve_charset)selfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r|   r   r   r   real_headerstrace_configrf   rf   rg   __init__   s   








zClientSession.__init__clsc                 C   s   t jd| jtdd d S )Nz6Inheritance class {} from ClientSession is discouragedr   rp   )rt   ru   formatra   rv   )r   rf   rf   rg   __init_subclass__V  s   
zClientSession.__init_subclass__namevalc                    s2   || j vrtjd|tdd t || d S )Nz8Setting custom ClientSession.{} attribute is discouragedr   rp   )ATTRSrt   ru   r   rv   super__setattr__)r   r   r   	__class__rf   rg   r   `  s   
zClientSession.__setattr__	_warningsc                 C   sd   | j s0tr
d| i}ni }|jd| tfi | | dd}| jd ur(| j|d< | j| d S d S )NsourcezUnclosed client session zUnclosed client session)client_sessionmessagesource_traceback)closedr>   ru   ResourceWarningrz   r}   call_exception_handler)r   r   kwargscontextrf   rf   rg   __del__j  s   




zClientSession.__del__methodurlr   _RequestContextManagerc                 K   s   t | j||fi |S )zPerform HTTP request.)r   _request)r   r   r   r   rf   rf   rg   rX   x  s   zClientSession.request
str_or_urlc                 C   s:   t |}| jd u r|S | s|jdsJ | j|S )N/)r   ry   is_absolutepath
startswithjoin)r   r   r   rf   rf   rg   
_build_url~  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   c          3         s   j rtdt||||}|d ur|d urtd|d ur'tj| jd}t|ts6|d ur6t	
dt d}g } j} |} |}z |}W n ty_ } zt||d }~ww t j} |d uru|D ]	}!| t|! qk|d urzt|}W n ty } zt||d }~ww |tu r j}"nt|tst|d}"n|}"t j|"j}#|# }$|d u r j} fdd jD }%|%D ]}&|&||||I d H  q|#  }'z|'j 	 t!|\}}(|	r|(rtd
|	d u r|(}	|	d u r j"}	|d ur|	d urt#j$|v rtd j%&|})|d ur/t' }*|*(| |*&|}+|+r/|))|+ |d ur9t|}n j*rXt+t, t-|\}}W d    n	1 sSw   Y   j.||fi d|d|d| d|d|)d|	d|d|d|d|d jd j/d|d|d|'d d|d|d|%},z6t0|"j14 I d H   j2d usJ  j2j1|,|%|"dI d H }-W d   I d H  n1 I d H sw   Y  W n t3j4y }. zt5d 6||.d }.~.ww |-j7d usJ |-j8d usJ |-j8j9|'|: d!k| j;|"j<|d" z2z"|,=|-I d H }/z
|/|-I d H  W n t>y+   |/?   w W n t>y:   |-?   w W n) t@yE     tAye }. z|.jBd u r[t|.t3j4r[ tC|.jD |.d }.~.ww  j%(|/jE|/jF |/jGd#v r@|
r@|%D ]}&|&H|||||/I d H  qz|d$7 }|I|/ |r||kr|/?  tJ|d jKtL||/jGd%kr|/jMt#jNks|/jGd&v r|/jMt#jOkrt#jP}d }|Qt#jRr|St#jR |/jTQt#jUp|/jTQt#jV}0|0d u rnU|/W  z
t|0 jX d'}1W n ty } zt|0|d }~ww |1jY}2|2d(vr|/?  td)|2s%|Z|1}1|[ |1[ kr7d }	|St#j$d  |1}d }|/W  q	 W d    n	1 sLw   Y  |d u rY j\}|r`|/]  |$d urw|/j^d urs|/j^_|$j` n|$`  tL||/_a|%D ]}&|&b|||||/I d H  q~|/W S  t>y } z"|#?  |$r|$`  d }$|%D ]}&|&c|||||I d H  q d }~ww )*NzSession is closedz9data and json parameters can not be used at the same time)dumpszChunk size is deprecated #1615r   rh   c                    s    g | ]}t  ||jd qS ))r   )rO   trace_config_ctx)r   r   r   r   rf   rg   
<listcomp>  s    
z*ClientSession._request.<locals>.<listcomp>Tz<Cannot combine AUTH argument with credentials encoded in URLzTCannot combine AUTHORIZATION header with AUTH argument or credentials encoded in URLr   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   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   JsonPayloadr   r   boolrt   ru   rv   r   _prepare_headersr   r+   setr   addr   r   rD   r   rW   r@   r}   r]   startr   r   send_request_startupdate_queryr   rE   r   r   AUTHORIZATIONr~   filter_cookiesr<   r   loadr   r   LookupErrorrB   r   r   rA   r^   r{   asyncioTimeoutErrorr/   r   	transportprotocolset_response_paramsupperr   r_   sendBaseExceptioncloser#   OSErrorerrnor%   argsr   r   statussend_request_redirectappendr0   request_infotupler   	METH_HEAD	METH_POSTMETH_GETgetCONTENT_LENGTHpopr   LOCATIONURIreleaser   schemer   r   r   r   
connectionadd_callbackcancel_historysend_request_end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   	redirectshistoryr   r   eskip_headersr   real_timeouttmhandler   tracer   auth_from_urlall_cookiestmp_cookie_jarreq_cookiesreqconnexcrespr_url
parsed_urlr'  rf   r   rg   r     s  #





	








	
*
	





  
.

zClientSession._requestrf   g      $@r   i  @ )r   	protocolsr   receive_timeout	autocloseautoping	heartbeatr   r   r   r   r   r   r   r   r   r   r   r   max_msg_sizer@  rA  rB  rC  rD  r   rE  _WSRequestContextManagerc                C   s   t | j|fi d|d|d|d|d|d|d|d|	d	|
d
|d|d|d|d|d|d|d|d|d|d|S )zInitiate websocket connection.r   r@  r   rA  rB  rC  rD  r   r   r   r   r   r   r   r   r   r   r   r   rE  )rF  _ws_connect)r   r   r   r@  r   rA  rB  rC  rD  r   r   r   r   r   r   r   r   r   r   r   r   rE  rf   rf   rg   
ws_connect  sZ   	
zClientSession.ws_connectc          *         s,  |d u r	t  }nt |}tjdtjdtjdi}| D ]
\}}||| qtt	
d}| |tj< |r@d||tj< |
d urI|
|tj< |rUt|d}||tj< t||||}| j||||d|	||||d
I d H }z|jd	krt|j|jd
|j|jd|jtjd dkrt|j|jd|j|jd|jtjd dkrt|j|jd|j|jd|jtjd}tt|t   }||krt|j|jd|j|jdd }|rtj|jv rdd |jtj  dD } | D ]}!|!|v r|!} nqd}"|r=|jtj}#|#r9zt!|#\}}"W n" t"y8 }$ zt|j|j|$j#d |j|jd|$d }$~$ww d}d}"|j$}%|%d usGJ |%j%}&|&d usQJ |%j&}'|'d us[J t'|&d| j(d}(|&)t*|(||( t+|&|'d||"d})W n t,y   |-   w | j.|(|)|||||| j(||||"dS )N	websocketupgrade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 rf   )strip)r   protorf   rf   rg   r   ^  s    z-ClientSession._ws_connect.<locals>.<listcomp>r   r   r   T)use_maskr   
notakeover)rA  rD  r   client_notakeover)/r   r   UPGRADE
CONNECTIONSEC_WEBSOCKET_VERSIONitems
setdefaultbase64	b64encodeosurandomdecodeSEC_WEBSOCKET_KEYr   SEC_WEBSOCKET_PROTOCOLORIGINrL   SEC_WEBSOCKET_EXTENSIONSr6   rX   r  r1   r  r/  r   r!  lowerSEC_WEBSOCKET_ACCEPThashlibsha1rF   digestsplitrM   rJ   r  r(  r  r  rN   r}   
set_parserrH   rI   r  r  r   )*r   r   r   r@  r   rA  rB  rC  rD  r   r   r   r   r   r   r   r   r   r   r   r   rE  r   default_headerskeyvaluesec_keyextstrr=  r_keymatchr  resp_protocolsrP  rR  compress_hdrsr<  r;  
conn_protor  readerwriterrf   rf   rg   rG    s  



		
	
zClientSession._ws_connectCIMultiDict[str]c                 C   sh   t | j}|r2t|ttfst |}t }| D ]\}}||v r(||| q|||< || q|S )z3Add default headers and transform it to CIMultiDict)r   r   r   r   r   r  rW  r  )r   r   resultadded_namesrj  rk  rf   rf   rg   r    s   
zClientSession._prepare_headers)r   c                K      t | jtj|fd|i|S )zPerform HTTP GET request.r   )r   r   r   r   r   r   r   r   rf   rf   rg   r!       zClientSession.getc                K   rx  )zPerform HTTP OPTIONS request.r   )r   r   r   METH_OPTIONSry  rf   rf   rg   options     zClientSession.optionsc                K   rx  )zPerform HTTP HEAD request.r   )r   r   r   r  ry  rf   rf   rg   head  r}  zClientSession.head)r   c                K   rx  )zPerform HTTP POST request.r   )r   r   r   r  r   r   r   r   rf   rf   rg   post  rz  zClientSession.postc                K   rx  )zPerform HTTP PUT request.r   )r   r   r   METH_PUTr  rf   rf   rg   put  rz  zClientSession.putc                K   rx  )zPerform HTTP PATCH request.r   )r   r   r   
METH_PATCHr  rf   rf   rg   patch  rz  zClientSession.patchc                 K   s   t | jtj|fi |S )zPerform HTTP DELETE request.)r   r   r   METH_DELETE)r   r   r   rf   rf   rg   delete  s   zClientSession.deletec                    s6   | j s| jdur| jr| j I dH  d| _dS dS )zMClose underlying connector.

        Release all acquired resources.
        N)r   r{   r   r  r   rf   rf   rg   r    s   
zClientSession.closec                 C   s   | j du p| j jS )z@Is client session closed.

        A readonly property.
        N)r{   r   r  rf   rf   rg   r     s   zClientSession.closedc                 C      | j S )z(Connector instance used for the session.r{   r  rf   rf   rg   r        zClientSession.connectorc                 C   r  )zThe session cookies.)r~   r  rf   rf   rg   r     r  zClientSession.cookie_jarc                 C   r  )z"The session HTTP protocol version.)r   r  rf   rf   rg   r     r  zClientSession.versionc                 C   r  ))Do URL requoting on redirection handling.)r   r  rf   rf   rg   r|     r  z"ClientSession.requote_redirect_urlc                 C   s   t jdtdd || _dS )r  z=session.requote_redirect_url modification is deprecated #2778r   rp   N)rt   ru   rv   r   )r   r   rf   rf   rg   r|     s   
c                 C   s   t jdtdd | jS )zSession's loop.z"client.loop property is deprecatedr   rp   )rt   ru   rv   r}   r  rf   rf   rg   r     s   zClientSession.loopc                 C   r  )zTimeout for the session.)r   r  rf   rf   rg   r     r  zClientSession.timeoutc                 C   r  )z*The default headers of the client session.)r   r  rf   rf   rg   r   $  r  zClientSession.headersc                 C   r  )z2Headers for which autogeneration should be skipped)r   r  rf   rf   rg   r   )  r  zClientSession.skip_auto_headersc                 C   r  )z2An object that represents HTTP Basic Authorization)r   r  rf   rf   rg   r   .  r  zClientSession.authc                 C   r  )zJson serializer callable)r   r  rf   rf   rg   r   3  r  zClientSession.json_serializec                 C   r  )z-Should connector be closed on session closing)r   r  rf   rf   rg   r   8  r  zClientSession.connector_ownerc                 C   r  )zGShould `ClientResponse.raise_for_status()` be called for each response.)r   r  rf   rf   rg   r   =  s   zClientSession.raise_for_statusc                 C   r  )z7Should the body response be automatically decompressed.)r   r  rf   rf   rg   r   D  r  zClientSession.auto_decompressc                 C   r  )z
        Should proxies information from environment or netrc be trusted.

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

        Session is switched to closed state anyway.
        Nr  r  rf   rf   rg   detachX  s   
zClientSession.detachc                 C   s   t d)NzUse async with instead)	TypeErrorr  rf   rf   rg   	__enter___     zClientSession.__enter__exc_typeexc_valexc_tbc                 C   s   d S r   rf   r   r  r  r  rf   rf   rg   __exit__b  s   zClientSession.__exit__c                    s   | S r   rf   r  rf   rf   rg   
__aenter__k  s   zClientSession.__aenter__c                    s   |   I d H  d S r   )r  r  rf   rf   rg   	__aexit__n  s   zClientSession.__aexit__r   rm   N)rm   ru  )rm   rV   )dra   rb   rc   __doc__r   r   rz   r{   r   r   r2   r3   r7   r   HttpVersion11rD   rx   r   rU   r8   r  AbstractEventLooprS   rT   r   strr?   rR   r   rG   r   r  r   rd   objectrW   r   rP   int_CharsetResolverr   r   r=   r   r   rt   r   rX   r   r   r   bytesrY   r4   r   r   r   r   rH  rG  r  r!  r|  r~  r  r  r  r  r  propertyr   r   r   r   r   r|   setterr   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r  r  r  __classcell__rf   rf   r   rg   rV      sZ   
	




|

	



  ;	

8	

 1
	


	
	


		




	
rV   c                   @   s   e Zd ZdZdeddef ddfddZdd	d
ZdeddfddZ	dddZ
deedef fddZdeedef fddZdefddZdS )_BaseRequestContextManager_coro_respcoroasyncio.Future[Any]Nrm   c                 C   s
   || _ d S r   )r  )r   r  rf   rf   rg   r   {     
z#_BaseRequestContextManager.__init__argc                 C   s   | j |S r   )r  r  r   r  rf   rf   rg   r  ~  s   z_BaseRequestContextManager.sendc                 C   s   | j | d S r   )r  throwr  rf   rf   rg   r    s   z _BaseRequestContextManager.throwc                 C   s
   | j  S r   )r  r  r  rf   rf   rg   r    r  z _BaseRequestContextManager.closec                 C   s   | j  }|S r   )r  	__await__)r   rw   rf   rf   rg   r    s   
z$_BaseRequestContextManager.__await__c                 C   s   |   S r   )r  r  rf   rf   rg   __iter__  r  z#_BaseRequestContextManager.__iter__c                    s   | j I d H | _| jS r   r  r  rf   rf   rg   r    s   z%_BaseRequestContextManager.__aenter__)r  Nrm   r  r  )ra   rb   rc   	__slots__r   rj   r   r  r  r  r  r
   r   r  r  r  rf   rf   rf   rg   r  w  s    

r  c                   @   :   e Zd ZdZdeee  dee dee ddfddZdS )	r   rf   r  r<  tbrm   Nc                    s   | j   d S r   )r  r&  r   r  r<  r  rf   rf   rg   r    s   z _RequestContextManager.__aexit__	ra   rb   rc   r  r   r   r  r   r  rf   rf   rf   rg   r         
r   c                   @   r  )	rF  rf   r  r<  r  rm   Nc                    s   | j  I d H  d S r   )r  r  r  rf   rf   rg   r    s   z"_WSRequestContextManager.__aexit__r  rf   rf   rf   rg   rF    r  rF  c                   @   sh   e Zd ZdZdeddef deddfddZdefd	d
Zde	e
e  de	e de	e ddfddZdS )_SessionRequestContextManagerr  r  _sessionr  r  Nr   rm   c                 C   s   || _ d | _|| _d S r   r  )r   r  r   rf   rf   rg   r     s   
z&_SessionRequestContextManager.__init__c                    s:   z| j I d H | _W | jS  ty   | j I d H   w r   )r  r  r  r  r  r  rf   rf   rg   r    s   z(_SessionRequestContextManager.__aenter__r  r<  r  c                    s.   | j d usJ | j   | j I d H  d S r   )r  r  r  r  rf   rf   rg   r    s   
z'_SessionRequestContextManager.__aexit__)ra   rb   rc   r  r   r3   rV   r   r  r   r   r  r   r  rf   rf   rf   rg   r    s&    
		
r  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   c                C   s   d}|du rd}t |dd}t||||||d}t|j| |fi d|d|d|d	|d
|d|d|d|	d|
d|d|d|d|d|d|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   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   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   rf   rf   rg   rX     sf   >		
rX   )r  r  rY  rd  r   r[  r   r   rt   
contextlibr   typesr   r   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   	multidictr   r   r   r   yarlr   r   r   r   r   abcr   client_exceptionsr   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   client_reqrepr2   r3   r4   r5   r6   	client_wsr7   r   r8   r9   r:   r;   	cookiejarr<   helpersr=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   http_websocketrJ   rK   rL   rM   streamsrN   tracingrO   rP   typedefsrQ   rR   rS   rT   rU   cchardetrr   ImportErrorcharset_normalizer__all__r   rY   r  srW   ri   re   rj   r  r  r  rx   rV   r  r   rF  r  r  r  r  r  rX   rf   rf   rf   rg   <module>   s    HT,(        E%
	

