o
    m=8j8                     @   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
mZmZmZmZmZ ddlmZ ddlmZ ddl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, d	dl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJ d	dlKmLZLmMZM d	dlNmOZOmPZPmQZQmRZRmSZS d	dlTmUZUmVZVmWZW d	dlXmYZYmZZZm[Z[m\Z\m]Z] d	dl^m_Z_ d	dl`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZk d	dl'mlZlmmZmmnZnmoZo d	dlpmqZqmrZrmsZs d	dltmuZumvZv d	dlwmxZxmyZymzZzm{Z{m|Z|m}Z} dZ~erEddlmZ neZejdkrVerVddlmZ G dd deddZG d d! d!eddZejd"d"d"d#G d$d% d%Zed&d'd(Zee ed)< eh d*Zed+d,d"d-ZeePegef ZG d.d/ d/ZG d0d1 d1eeeef ee ZeeP ZeeVe  ZG d2d3 d3Zejdkrere'jddd4d5ed6e}d7emd8eZdB d9ejdB d:ee d;efd<d=ZdS e'jddd4d5ed6e}d7emd8eZdB d9ejdB d:ed;efd>d=ZdS )?zHTTP Client for asyncio.    N)	AwaitableCallable	Coroutine	GeneratorIterableSequence)suppress)TracebackType)TYPE_CHECKINGAnyFinalGenericLiteral	TypedDictTypeVaroverload)CIMultiDict	MultiDictMultiDictProxyistr)URL   )hdrshttppayload)WebSocketDataQueue)AbstractCookieJar)ClientConnectionErrorClientConnectionResetErrorClientConnectorCertificateErrorClientConnectorDNSErrorClientConnectorErrorClientConnectorSSLErrorClientErrorClientHttpProxyErrorClientOSErrorClientPayloadErrorClientProxyConnectionErrorClientResponseErrorClientSSLErrorConnectionTimeoutErrorContentTypeError
InvalidURLInvalidUrlClientErrorInvalidUrlRedirectClientErrorNonHttpUrlClientErrorNonHttpUrlRedirectClientErrorRedirectClientErrorServerConnectionErrorServerDisconnectedErrorServerFingerprintMismatchServerTimeoutErrorSocketTimeoutErrorTooManyRedirectsWSMessageTypeErrorWSServerHandshakeError)ClientMiddlewareTypebuild_client_middlewares)ClientRequestClientResponseFingerprintRequestInfo_merge_ssl_params)DEFAULT_WS_CLIENT_TIMEOUTClientWebSocketResponseClientWSTimeout)HTTP_AND_EMPTY_SCHEMA_SETBaseConnectorNamedPipeConnectorTCPConnectorUnixConnector)	CookieJar)	_SENTINELDEBUGDEFAULT_CHUNK_SIZEEMPTY_BODY_METHODS	BasicAuthTimeoutHandlebasicauth_from_netrcget_env_proxy_for_urlnetrc_from_envsentinelstrip_auth_from_url)WS_KEYHttpVersionWebSocketReaderWebSocketWriter)WSHandshakeError
ws_ext_genws_ext_parse)TraceTraceConfig)JSONBytesEncoderJSONEncoderLooseCookiesLooseHeadersQueryStrOrURL)*r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r1   r/   r.   r0   r2   r3   r4   r5   r6   r7   r9   r<   r=   r>   r?   rE   rG   rH   rF   rB   ClientSessionClientTimeoutrC   requestr8   )
SSLContext      )Unpackc                   @   sP  e Zd ZU eed< eed< eed< edB ed< edB ed< ee	 dB ed< e
dB ed< eed	< eed
< e	eB dB ed< edB ed< eed< deB eeged f B ed< eed< edB ed< e
dB ed< ded< eeB eB ed< e	dB ed< edB ed< eed< edB ed< edB ed< edB ed< edB ed< edB ed< ee dB ed< dS )_RequestOptionsparamsdatajsonNcookiesheadersskip_auto_headersauthallow_redirectsmax_redirectscompresschunked	expect100raise_for_statusread_until_eofproxy
proxy_authz ClientTimeout | _SENTINEL | Nonetimeoutsslserver_hostnameproxy_headerstrace_request_ctxread_bufsizeauto_decompressmax_line_sizemax_field_sizemax_headersmiddlewares)__name__
__module____qualname__rb   __annotations__r   r`   ra   r   strrN   boolintr   r=   r   rc   rg   r>   objectr   r:    r   r   U/home/nk/hobo-godmode/plappi-mvp/.venv/lib/python3.10/site-packages/aiohttp/client.pyrl      s8   
 rl   Ftotalc                   @   s   e Zd ZU eed< ee ed< ded< edB ed< eed< eed< edB ed	< edB ed
< edB ed< e	ed< e
dB ed< edB ed< edB ed< eeB eB ed< edB ed< edB ed< edB ed< edB ed< e
dB ed< eed< eed< dS )_WSConnectOptionsmethod	protocolszClientWSTimeout | _SENTINELr}   Nreceive_timeout	autocloseautoping	heartbeatrs   originrm   rq   r{   r|   r~   
verify_sslfingerprintssl_contextr   r   rv   max_msg_size)r   r   r   r   r   r   floatr   rN   rb   ra   rc   rg   r>   bytesr   r   r   r   r   r      s,   
 r   T)auto_attribsfrozenslotsc                   @   sZ   e Zd ZU dZedB ed< dZedB ed< dZedB ed< dZedB ed< dZ	eed< dS )re   Nr   connect	sock_readsock_connect   ceil_threshold)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   re      s   
 re   i,     )r   r   DEFAULT_TIMEOUT>   GETPUTHEADTRACEDELETEOPTIONS_RetType_coz.ClientResponse | ClientWebSocketResponse[bool])bound	covariantc                D       s	  e Zd ZU dZeg dZdZejdB e	d< dZ
edB e	d< 	dddddddddejdeeeejdddededdddeddd	d
d deddedB dedB dejdB dedB dedB dedB dedB dee dB dedB dededB dee dee dee de de!dB de"de"e#ege$d f B d e%e&B d!e%dB d"e'e(B d#e"d$e"d%e"d&e)e* dB d'e+d(e+d)e+d*e+d+e,d,e-e. d-e&dB e%B d.dfBd/d0Z/d1ed  d.dfd2d3Z0e1rd4ed5e2d.df fd6d7Z3e4fd8e2d.dfd9d:Z5e6j7d;kre8rd<ed=ed>e9e: d.d?fd@dAZ;nd<ed=ed>e2d.d?fdBdAZ;dCed.e<fdDdEZ=dddddddddFdddddddeddddddddddddddGd<edCedHe>dIe2dJe2dedB dedB dee dB dedB dKe"dLe+dMee"B dB dNe"dB dOe"dde"B e#ege$d f B dPe"dedB dedB d"e(e&B dQe"dB dRe?dB dSe@dB dTe@e"B eAB dUedB dVedB dWe'd'e+dB d#e"dB d(e+dB d)e+dB d*e+dB d,e-e. dB d.efBdXdYZBe6j7d;kre8reCdZd[d=ed\eDd d>e9eE d.d]fd^d_ZFeCd=ed\eDd d>e9eE d.d`fdad_ZFeCdZd[d=ed\e"d>e9eE d.dbfdcd_ZFeGjHdedddddddddddddddddddeddfd=ed<edgee d"eIe&B dhe%dB die"dje"dke%dB dedB dledB dHe>dedB dedB dedB dTe@e"B eAB dQe"dB dRe?dB dSe@dB dUedB dVedB dMe+dme+d\e"d.dbf0dnd_ZFe6j7d;kre8reCdZd[d=ed\eDd d>e9eE d.dofdpdqZJeCd=ed\eDd d>e9eE d.drfdsdqZJeCdZd[d=ed\e"d>e9eE d.dtfdudqZJeGjHdedddddddddddddddddddeddfd=ed<edgee d"eIe&B dhe%dB die"dje"dke%dB dedB dledB dHe>dedB dedB dedB dTe@e"B eAB dQe"dB dRe?dB dSe@dB dUedB dVedB dMe+dme+d\e"d.dtf0dvdqZJdedB d.dwfdxdyZKdzed.edB fd{d|ZLe6j7d;kre8rd=ed>e9e: d.d?fd}d~ZMd=ed>e9e: d.d?fddZNd=ed>e9e: d.d?fddZOd=ed>e9e: d.d?fddZPd=ed>e9e: d.d?fddZQd=ed>e9e: d.d?fddZRd=ed>e9e: d.d?fddZSnkddd=edKe"d>e2d.d?fdd~ZMddd=edKe"d>e2d.d?fddZNddd=edKe"d>e2d.d?fddZOddd=edIe2d>e2d.d?fddZPddd=edIe2d>e2d.d?fddZQddd=edIe2d>e2d.d?fddZRd=ed>e2d.d?fddZSdddZTeUd.e"fddZVeUd.edB fddZWeUd.e!fddZXeUd.eYe+e+f fddZZeUd.e"fddZ[e[j\d5e"d.dfddZ[eUd.ejfddZ]eUd.e(fddZ^eUdddZ_eUd.ee` fddZaeUd.edB fddZbeUd.efddZceUd.e"fddZdeUd.e"e#ege$d f B fddZeeUd.e"fddZfeUd.e"fddZgeUd.e)e* fddZhdddZidddZjdeek dB dekdB deldB d.dfddZmdddZndeek dB dekdB deldB d.dfddÄZo  ZpS )rd   z/First-class interface for making HTTP requests.) 	_base_url_base_url_origin_source_traceback
_connector_loop_cookie_jar_connector_owner_default_auth_version_json_serialize_json_serialize_bytes_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_bufsize_max_line_size_max_field_size_max_headers_resolve_charset_default_proxy_default_proxy_auth_retry_connection_middlewaresrequote_redirect_urlNr   r   TFi     c                 C   s   dS )Nzutf-8r   )rbr   r   r   <lambda>U  s    zClientSession.<lambda>r   )	connectorlooprp   rq   r{   r|   rr   rs   json_serializejson_serialize_bytesrequest_classresponse_classws_response_classversion
cookie_jarconnector_ownerry   read_timeoutconn_timeoutr}   r   	trust_envr   trace_configsr   r   r   r   fallback_charset_resolverr   ssl_shutdown_timeoutbase_urlr   r   rp   rq   r{   r|   rr   rs   r   r   r   r   r   r   r   r   ry   r   r   r}   r   r   r   r   r   r   r   r   r   r   r   returnc          #      C   s  d | _ |d u r|d ur|j}|pt }|d u st|tr,|| _|d u r&d n| | _nt|| _| j | _| jj	s?J d| jd urO| jj
dsOtd|tu sW|d u rt| _|turotjdtdd tj| j|d| _|d urtj| j|d| _tjd	tdd n"t|tstd
t| d|| _|turtd|d urtd| turtjdtdd |d u rt|| d}|j|urtd|| _| rttd| _|d u rt|d}|| _ |r| j !| |	d urtjdtdd |d urtjdtdd || _ || _"|	| _#|| _$|
| _%|| _&|| _'|| _(|| _)|| _*|| _+|| _,|| _-|| _.|r5t/|}!nt/ }!|!| _0|d urKt1dd |D | _2nt1 | _2|| _3|| _4|| _5|p\g | _6| j6D ]}"|"7  qa|| _8|| _9|| _:d| _;|| _<d S )Nz Only absolute URLs are supported/z!base_url must have a trailing '/'z8read_timeout is deprecated, use timeout argument instead   
stacklevelr   )r   z8conn_timeout is deprecated, use timeout argument insteadztimeout parameter cannot be of z. type, please use 'timeout=ClientTimeout(...)'zGread_timeout and timeout parameters conflict, please setup timeout.readzJconn_timeout and timeout parameters conflict, please setup timeout.connectzSThe ssl_shutdown_timeout parameter is deprecated and will be removed in aiohttp 4.0)r   r   z0Session and connector has to use same event loopr   r   The 'auth' parameter is deprecated and will be removed in v4; pass headers={'Authorization': aiohttp.encode_basic_auth(login, password)} insteadThe 'proxy_auth' parameter is deprecated and will be removed in v4; pass proxy_headers={'Proxy-Authorization': aiohttp.encode_basic_auth(login, password)} insteadc                 s   s    | ]}t |V  qd S Nr   .0ir   r   r   	<genexpr>  s    z)ClientSession.__init__.<locals>.<genexpr>T)=r   r   asyncioget_running_loop
isinstancer   r   r   r   absolutepathendswith
ValueErrorrS   r   r   warningswarnDeprecationWarningattrevolvere   typerG   RuntimeError	get_debug	tracebackextract_stacksys	_getframer   rI   r   update_cookiesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	frozensetr   r   r   r   r   freezer   r   r   r   r   )#selfr   r   r   rp   rq   r{   r|   rr   rs   r   r   r   r   r   r   r   r   ry   r   r   r}   r   r   r   r   r   r   r   r   r   r   r   real_headerstrace_configr   r   r   __init__5  s   &








zClientSession.__init__clsc                 C   s   t jd| j dtdd d S )NzInheritance class z" from ClientSession is discouragedr   r   )r   r   r   r  )r  r   r   r   __init_subclass__  s
   
zClientSession.__init_subclass__namevalc                    s4   || j vrtjd| dtdd t || d S )NzSetting custom ClientSession.z attribute is discouragedr   r   )ATTRSr   r   r  super__setattr__)r  r  r  	__class__r   r   r    s   

zClientSession.__setattr__	_warningsc                 C   sZ   | j s+d| 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   ResourceWarningr   r   call_exception_handler)r  r  kwargscontextr   r   r   __del__  s   



zClientSession.__del__rh   r   urlr#  _RequestContextManagerc                 K      d S r   r   r  r   r&  r#  r   r   r   rf     s   zClientSession.requestc                 K   s   t | j||fi |S )zPerform HTTP request.)r'  _requestr)  r   r   r   rf     s   
str_or_urlc                 C   s$   t |}| jr|js| j|S |S r   )r   r   r   join)r  r+  r&  r   r   r   
_build_url  s   zClientSession._build_url
   )rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r   r   r   r~   r   r   r   r   r   r   r   r   r   rm   rn   ro   rt   ru   rv   rw   rx   rz   r   r   r   r~   r   r   r   c          <         s	  j rtdt||||}|	d urtjdtdd |d ur'tjdtdd |d ur3|d ur3td|d urMjd urEtj	|jd}ntj
|jd}t|ts\|d ur\tdt d	}!g }"j}#|pfi }|}z|}$W n ty }% zt||%d }%~%ww jd usJ |$jjjvrt|$|d urd
d |D jB }&n	jrj}&nd }&|d u rj}|d u rj}|d u rd }n|}zt|}W n ty }% zt||%d }%~%ww |tu rjnt|tst|dn|tjj j!d}'|'" }(d u rj# d u rj$ d u rj%d u r$j&d u r,j'	fddj(D 

D ]})|))||$*||I d H  q9|'+ z{ j,o[|t-v }*	 t.|$\}$}+|$j/sr|!rlt0nt},|,|$|"s|	r|+rtd|	d u s|"r|+d ur|+}	|	d u rj1rj2rj3|$4 krj1}	|	d u rj5r|$j6d urj7d j8|$j6I d H }	|d ur|	d urt9j:|v rtdj;<|$}-|d urt=j;j>j;j?d}.|.@| |.<|$}/|/r|-A|/ d }0|d ur	t|}0n$j5r-tBtC tDEtF|$I d H \}0}W d    n	1 s(w   Y  jG||$fi d|d|d|&d|d|-d|	d|#d|d|d|djdjHd |0d!|d"d#d$|d urm|ndd%|d&|d'
d(jI}1d)tJd*tKf 
f
d+d,}2| d u rjLn| }3|3rtM|2|3}4n|2}4z	|4|1I d H }5W nG tNtOtPtQfy     tRtSfy   |*rd-}*Y q\  tTy     tUy }6 z|6jVd u rt|6tDjWr tR|6jX |6d }6~6ww |5jYrj;Z|5jY|5j[ |5j\d.v rW|
rW
D ]})|)]||$*|||5I d H  q|!d/7 }!|"^|5 |rO|!|krO|1j_d urA|1j_` I d H  |5`  ta|"d	 jbtc|"|5j\d0kr\|5jdt9jeksi|5j\d1v r||5jdt9jfkr|t9jg}d }|ht9jir{|jt9ji n|1j_d ur|1j_jkr|5`  tld2|1j_}|5jmht9jnp|5jmht9jo}7|7d u rn|5p  z
t|7jq d3}8W n% ty }% z|1j_d ur|1j_` I d H  |5`  t0|7d4|%d }%~%ww |8j}9|9trvr|1j_d ur|1j_` I d H  |5`  ts|7|9s|$t|8}8z|84 }:W n% ty, }; z|1j_d ur|1j_` I d H  |5`  t0|8d5|;d };~;ww |$4 |:krMd }	d }|jt9j:d  |jt9jud  |jt9jvd  |8}$i }|5p  q\	 W d    n	1 scw   Y  |1j_d urv|1j_` I d H  |d u r~jw}|d u rntx|r||5I d H  n|r|5y  |(d ur|5jzd ur|5jz{|(j| n|(|  tc|"|5_}
D ]})|)~||$*|||5I d H  q|5W S  ty }% z"|'`  |(r|(|  d }(
D ]})|)||$*|||%I d H  q d }%~%ww )6NzSession is closedr   ri   r   r   z9data and json parameters can not be used at the same time)dumpszChunk size is deprecated #1615r   c                 S   s   h | ]}t |qS r   r   r   r   r   r   	<setcomp>z  s    z)ClientSession._request.<locals>.<setcomp>r   )r   c                    s    g | ]}t  ||jd qS ))r   )r\   trace_config_ctx)r   r  )r  r   r   r   
<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 URL)unsafequote_cookierm   rq   rr   rn   rp   rs   r   rv   rw   rx   r   r   r{   r|   timersessionr~   r   r   tracesr   reqr   c                    s   j d usJ zj j| 	dI d H }W n tjy, } z	td| j |d }~ww |jd us4J |jj| jt	v  j
j jd
 z!| |I d H }z||I d H  W W |S  tyk   |   w  tyw   |   w )N)r7  r}   zConnection timeout to host )
r5  skip_payloadrz   r   r   r   timeout_ceil_thresholdr   r   r   )r   r   r   TimeoutErrorr*   r&  protocolset_response_paramsr   rM   r   _timeout_ceil_thresholdsendstartBaseExceptionclose)r8  connexcresp)
r   r   r   r   r   rz   real_timeoutr  r5  r7  r   r   _connect_and_send_request$  sP   
z9ClientSession._request.<locals>._connect_and_send_requestF)-  .  /  i3  i4  r   rJ  )rH  rI  zzCannot follow redirect with a consumed request body. Use bytes, a seekable file-like object, or set allow_redirects=False.)encodedzHServer attempted redirecting to a location that does not look like a URLzInvalid redirect URL origin)r   r  r@   r   r   r  r   r   r   JsonBytesPayloadJsonPayloadr   r   r   r   _prepare_headersr-  r-   r   schemeallowed_protocol_schema_setr/   r   r   r   r   r,   rS   r   re   rO   r   r   r   r@  r   r   r   r   r   r   send_request_startupdate_queryr5  r   IDEMPOTENT_METHODSrT   raw_hostr.   r   r   r   r   r   hostrun_in_executor_get_netrc_authr   AUTHORIZATIONr   filter_cookiesrI   r3  r4  r  loadr   LookupErrorr   	to_threadrQ   r   r   r   r<   r=   r   r;   r*   r!   r   r"   r%   r3   r#   OSErrorerrnor;  args_raw_cookie_headersupdate_cookies_from_headersr&  statussend_request_redirectappend_bodyrB  r7   request_infotupler   	METH_HEAD	METH_POSTMETH_GETgetCONTENT_LENGTHpopconsumedr&   rq   LOCATIONURIreleaser   rD   r0   r,  COOKIEPROXY_AUTHORIZATIONr   callablery   
connectionadd_callbackcancel_historysend_request_endrA  send_request_exception)<r  r   r+  rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r   r   r   r~   r   r   r   r   r   r   r   r   r   	redirectshistoryr   r&  eskip_headerstmhandletraceretry_persistent_connectionauth_from_urlerr_exc_clsall_cookiestmp_cookie_jarreq_cookiesproxy_r8  rG  effective_middlewareshandlerrE  rD  r_urlparsed_redirect_urlrO  redirect_originorigin_val_errr   )r   r   r   r   r   rz   rF  r  r5  r   r7  r   r*    s  +










	











	
 )



	

	    !




zClientSession._request.decode_textr  zB_BaseRequestContextManager[ClientWebSocketResponse[Literal[True]]]c                K   r(  r   r   r  r&  r  r#  r   r   r   
ws_connect     zClientSession.ws_connectzC_BaseRequestContextManager[ClientWebSocketResponse[Literal[False]]]c                K   r(  r   r   r  r   r   r   r    r  z9_BaseRequestContextManager[ClientWebSocketResponse[bool]]c                K   r(  r   r   r  r   r   r   r    r  r   i  @ )r   r   r}   r   r   r   r   rs   r   rm   rq   r{   r|   r~   r   r   r   r   r   rv   r   r  r   r   r   r   r   r   r   c                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|d|d|S )zInitiate websocket connection.r   r   r}   r   r   r   r   rs   r   rm   rq   r{   r|   r~   r   r   r   r   r   rv   r   r  )_WSRequestContextManager_ws_connect)r  r&  r   r   r}   r   r   r   r   rs   r   rm   rq   r{   r|   r~   r   r   r   r   r   rv   r   r  r   r   r   r     sb   	
z&ClientWebSocketResponse[Literal[True]]c                      d S r   r   r  r   r   r   r  Z     zClientSession._ws_connectz'ClientWebSocketResponse[Literal[False]]c                   r  r   r   r  r   r   r   r  c  r  zClientWebSocketResponse[bool]c                   r  r   r   r  r   r   r   r  l  r  c          0         s0  |	d urt jdtdd |d urt jdtdd |tur3t|tr%|}nt jdtdd t|d}nt}|d urHt jdtdd tj||d	}|d u rPt	 }nt	|}t
jd
t
jdt
jdi}| D ]
\}}||| qcttd}| |t
j< |rd||t
j< |
d ur|
|t
j< |rt|d}||t
j< |d u rt jdtdd d}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rt|j|j d|j|j!d|j!"t
j$d} tt%&|t' (  }!| |!kr3t|j|j d|j|j!dd }"|r\t
j|j!v r\dd |j!t
j )dD }#|#D ]}$|$|v rZ|$}" nqOd}%|r|j!"t
j}&|&rzt*|&\}}%W n" t+y }' zt|j|j |'j,d |j|j!d|'d }'~'ww d}d}%|j-}(|(d usJ |(j.})|)d usJ |j/d u rd |)_0n|)j0d urt1|j/|)j0|)_0|(j2}*|*d usJ t3|)t4| j5d}+t6|)|*d||%d },W n t7y   |8   w | j9|+|,|"||||| j5|||%d!}-t:|+||d"}.|d u rd n|-j;}/|)j<|.|+|/d# |-S )$Nr   ri   r   r   zeparameter 'timeout' of type 'float' is deprecated, please use 'timeout=ClientWSTimeout(ws_close=...)'r   )ws_closezofloat parameter 'receive_timeout' is deprecated, please use parameter 'timeout=ClientWSTimeout(ws_receive=...)')
ws_receive	websocketUpgrade13   ,)rv   z+ssl=None is deprecated, please use ssl=TrueTF)	rm   rq   rz   rs   r{   r|   r~   r   r   e   zInvalid response status)r  rb  rq    zInvalid upgrade headerupgradezInvalid connection headerzInvalid challenge responsec                 S   s   g | ]}|  qS r   )strip)r   protor   r   r   r2    s    z-ClientSession._ws_connect.<locals>.<listcomp>r   r   )use_maskrv   
notakeover)r   rv   client_notakeoverr  )data_received_cb)=r   r   r  rS   r   rC   rA   r  r  r   r   UPGRADE
CONNECTIONSEC_WEBSOCKET_VERSIONitems
setdefaultbase64	b64encodeosurandomdecodeSEC_WEBSOCKET_KEYr,  SEC_WEBSOCKET_PROTOCOLORIGINrZ   SEC_WEBSOCKET_EXTENSIONSr@   rf   rb  r9   rf  r|  rq   rk  lowerSEC_WEBSOCKET_ACCEPThashlibsha1rU   digestsplitr[   rY   r_  ru  r<  r  r   max	transportr   rL   r   rX   rA  rB  r   rW   _on_data_received
set_parser)0r  r&  r   r   r}   r   r   r   r   rs   r   rm   rq   r{   r|   r~   r   r   r   r   r   rv   r   r  
ws_timeoutr  default_headerskeyvaluesec_keyextstrrE  r_keymatchr<  resp_protocolsr  r  compress_hdrsrD  rC  
conn_protor  readerwriterws_respparsercbr   r   r   r  u  s^  




	
	
	
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   setr  add)r  rq   resultadded_namesr  r  r   r   r   rN  b  s   
zClientSession._prepare_headersrU  c                 C   s(   t  }zt||W S  ty   Y dS w )z
        Get auth from netrc for the given host.

        This method is designed to be called in an executor to avoid
        blocking I/O in the event loop.
        N)rR   rP   r[  )r  rU  	netrc_objr   r   r   rW  r  s   zClientSession._get_netrc_authc                 K   r(  r   r   r  r&  r#  r   r   r   rk       zClientSession.getc                 K   r(  r   r   r  r   r   r   options  r  zClientSession.optionsc                 K   r(  r   r   r  r   r   r   head  r  zClientSession.headc                 K   r(  r   r   r  r   r   r   post  r  zClientSession.postc                 K   r(  r   r   r  r   r   r   put  r  zClientSession.putc                 K   r(  r   r   r  r   r   r   patch  r  zClientSession.patchc                 K   r(  r   r   r  r   r   r   delete  r  zClientSession.delete)rt   c                K      t | jtj|fd|i|S )zPerform HTTP GET request.rt   )r'  r*  r   rj  r  r&  rt   r#  r   r   r   rk       c                K   r  )zPerform HTTP OPTIONS request.rt   )r'  r*  r   METH_OPTIONSr  r   r   r   r    r  c                K   r  )zPerform HTTP HEAD request.rt   )r'  r*  r   rh  r  r   r   r   r    r  )rn   c                K   r  )zPerform HTTP POST request.rn   )r'  r*  r   ri  r  r&  rn   r#  r   r   r   r       c                K   r  )zPerform HTTP PUT request.rn   )r'  r*  r   METH_PUTr  r   r   r   r    r  c                K   r  )zPerform HTTP PATCH request.rn   )r'  r*  r   
METH_PATCHr  r   r   r   r    r  c                 K   s   t | jtj|fi |S )zPerform HTTP DELETE request.)r'  r*  r   METH_DELETEr  r   r   r   r    s   c                    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   rB  r  r   r   r   rB    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  r   r   r   r     s   zClientSession.closedc                 C      | j S )z(Connector instance used for the session.r   r  r   r   r   r        zClientSession.connectorc                 C   r  )zThe session cookies.)r   r  r   r   r   r      r  zClientSession.cookie_jarc                 C   r  )z"The session HTTP protocol version.)r   r  r   r   r   r     r  zClientSession.versionc                 C   r  ))Do URL requoting on redirection handling.)r   r  r   r   r   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   r   N)r   r   r  r   )r  r  r   r   r   r     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  r   r  r   r   r   r     s   zClientSession.loopc                 C   r  )zTimeout for the session.)r   r  r   r   r   r}   !  r  zClientSession.timeoutc                 C   r  )z*The default headers of the client session.)r   r  r   r   r   rq   &  r  zClientSession.headersc                 C   r  )z2Headers for which autogeneration should be skipped)r   r  r   r   r   rr   +  r  zClientSession.skip_auto_headersc                 C   r  )z2An object that represents HTTP Basic Authorization)r   r  r   r   r   rs   0  r  zClientSession.authc                 C   r  )zJson serializer callable)r   r  r   r   r   r   5  r  zClientSession.json_serializec                 C   r  )z-Should connector be closed on session closing)r   r  r   r   r   r   :  r  zClientSession.connector_ownerc                 C   r  )zGShould `ClientResponse.raise_for_status()` be called for each response.)r   r  r   r   r   ry   ?  s   zClientSession.raise_for_statusc                 C   r  )z7Should the body response be automatically decompressed.)r   r  r   r   r   r   F  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  r   r   r   r   K  s   zClientSession.trust_envc                 C   r  )z7A list of TraceConfig instances used for client tracing)r   r  r   r   r   r   U  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  r   r   r   detachZ  s   
zClientSession.detachc                 C   s   t d)NzUse async with instead)	TypeErrorr  r   r   r   	__enter__a     zClientSession.__enter__exc_typeexc_valexc_tbc                 C   r(  r   r   r  r  r  r  r   r   r   __exit__d  r  zClientSession.__exit__c                    s   | S r   r   r  r   r   r   
__aenter__m  s   zClientSession.__aenter__c                    s   |   I d H  d S r   )rB  r  r   r   r   	__aexit__p  s   zClientSession.__aexit__r   r   N)r   r  )r   rd   )qr   r   r   __doc__r  r  r   r  StackSummaryr   r   rE   ro   r/  r<   r=   rB   r   HttpVersion11rS   rL   rc   r   AbstractEventLoopr`   ra   rN   r   r   r_   r^   r  rV   r   r   r   r   r   rJ   r   re   listr]   r   _CharsetResolverr   r:   r  r  rK   r   r  r   r%  r	  version_infor
   rk   rl   rf   r   r-  rb   r   rg   r>   r*  r   r   r   r  r   rj  rC   r  rN  rW  rk  r  r  r  r  r  r  rB  propertyr   r   r   rg  r   r   setterr   r}   rq   r   rr   rs   r   r   ry   r   r   r   r  r  rA  r	   r  r  r  __classcell__r   r   r  r   rd   
  s  
 %	

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



 !"#
$%
   m	


8	


 n





	



	
	


		




	
rd   c                   @   s   e Zd ZdZdeeje def ddfddZ	dddeje fdd	Z
d
ededeje 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ee dB dedB dedB ddfddZdS )_BaseRequestContextManager)_coro_respcoroNr   c                 C   s
   || _ d S r   )r  )r  r  r   r   r   r       
z#_BaseRequestContextManager.__init__argc                 C   s   | j |S r   )r  r?  )r  r  r   r   r   r?    s   z_BaseRequestContextManager.sendr_  r#  c                 O   s   | j j|i |S r   )r  throw)r  r_  r#  r   r   r   r    s   z _BaseRequestContextManager.throwc                 C   s
   | j  S r   )r  rB  r  r   r   r   rB    r  z _BaseRequestContextManager.closec                 C   s   | j  }|S r   )r  	__await__)r  retr   r   r   r	    s   
z$_BaseRequestContextManager.__await__c                 C   s   |   S r   )r	  r  r   r   r   __iter__  r  z#_BaseRequestContextManager.__iter__c                    s    | j I d H | _| j I d H S r   )r  r  r  r  r   r   r   r    s   z%_BaseRequestContextManager.__aenter__r  rD  tbc                    s   | j |||I d H  d S r   )r  r  r  r  rD  r  r   r   r   r    s   z$_BaseRequestContextManager.__aexit__r  )r   r   r   	__slots__r   r   Futurer   r   r  r?  r  rB  r   r	  r  r  r  rA  r	   r  r   r   r   r   r  y  s$    "

r  c                   @   sn   e Zd ZdZdeeje def de	ddfddZ
defdd	Zd
ee dB dedB dedB ddfddZdS )_SessionRequestContextManagerr  r  _sessionr  Nr6  r   c                 C   s   || _ d | _|| _d S r   r  )r  r  r6  r   r   r   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  rA  r  rB  r  r   r   r   r    s   z(_SessionRequestContextManager.__aenter__r  rD  r  c                    s.   | j d usJ | j   | j I d H  d S r   )r  rB  r  r  r   r   r   r    s   
z'_SessionRequestContextManager.__aexit__)r   r   r   r  r   r   r  r   r=   rd   r  r  r  rA  r	   r  r   r   r   r   r    s&    
		
r  )r   r   r   r   r&  r   r   r   r#  r   c                K   r(  r   r   )r   r&  r   r   r   r#  r   r   r   rf     s   rf   c                K   sZ   d}|du rd}t |dd}t||dd||dt||d}t|j| |fi ||S )aB  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
        >>> async with aiohttp.request('GET', 'http://python.org/') as resp:
        ...    print(resp)
        ...    data = await resp.read()
        <ClientResponse(https://www.python.org/) [200 OK]>
        FNT)r   force_closerp   r}   )r   rp   r   r}   r   r   )rG   rd   rm  rS   r  r*  )r   r&  r   r   r   r#  r   r6  r   r   r   rf     s    -

	)r  r   r  r  ro   r  r	  r  r   collections.abcr   r   r   r   r   r   
contextlibr   typesr	   typingr
   r   r   r   r   r   r   r   r  	multidictr   r   r   r   yarlr   r  r   r   r   _websocket.readerr   abcr   client_exceptionsr   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   client_middlewaresr:   r;   client_reqrepr<   r=   r>   r?   r@   	client_wsrA   rB   rC   r   rD   rE   rF   rG   rH   	cookiejarrI   helpersrJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   http_websocketrY   rZ   r[   tracingr\   r]   typedefsr^   r_   r`   ra   rb   rc   __all__r~   rg   r  rk   rl   r   sre   r   r   r  rS  r   r   r   r  rd   r  r'  r   r  r  r  r  rf   r   r   r   r   <module>   s     (|4 	3          
y&!