a
    &hF                     @   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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l0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC ddlDmEZEmFZFmGZGmHZHmIZI ddlJmKZK ddlLmMZMmNZNmOZOmPZP ddlQmRZR ddlSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z] ddl,m^Z^m_Z_m`Z`maZa ddlbmcZcmdZdmeZemfZf ddlgmhZh ddlimjZjmkZk ddllmmZmmnZnmoZompZp dZqerNddlrmsZs ndZse"jtddddG dd dZueuddZveeu ewd< e dZxeeFeygezf Z{G d d! d!Z|G d"d# d#eeeexf eex Z}G d$d% d%e}eF Z~G d&d' d'e}eK ZG d(d) d)Zdddddddd*ddd+dddde\de,jdddd,d,d-ezepeeezezf  eeeeo eeez  eeV eeeez ee eee eeep eeV e!euef een e_eeM ee eej eeed.d/d0ZdS )1zHTTP Client for asyncio.    N)suppress)SimpleNamespaceTracebackType)TYPE_CHECKINGAny	AwaitableCallable	CoroutineFinal	FrozenSet	GeneratorGenericIterableListLiteral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)
	_SENTINELDEBUG	BasicAuthTimeoutHandleceil_timeoutget_env_proxy_for_urlget_running_loopmethod_must_be_empty_bodysentinelstrip_auth_from_url)WS_KEYHttpVersionWebSocketReaderWebSocketWriter)WSHandshakeError	WSMessage
ws_ext_genws_ext_parse)FlowControlDataQueue)TraceTraceConfig)JSONEncoderLooseCookiesLooseHeadersStrOrURL)r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r;   r=   r>   r<   r:   ClientSessionClientTimeoutrequest)
SSLContextT)Zauto_attribsfrozenslotsc                   @   sZ   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Z
eed< dS )rZ   Ntotalconnect	sock_readsock_connect   ceil_threshold)__name__
__module____qualname__r_   r   float__annotations__r`   ra   rb   rd    rj   rj   S/var/www/html/swiplay.fr/scambot/venv/lib/python3.9/site-packages/aiohttp/client.pyrZ      s
   
rZ   i,  r_   DEFAULT_TIMEOUT_RetTypec                !       s  e Zd ZU dZeg dZdZeej	 e
d< dZee e
d< dwddddddejeeeejdddededddd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ge$d f f e"e%e&f ee% e"e'e(f e!e!e!ee)e*  e+e+e+e,ddddZ-ed  ddddZ.e/rRee0dd fddZ1e2fe0ddddZ3eee0ddddZ4ee5dddZ6ddddddddd dddddddedddddddddddd!eeee7eef  e0e0ee ee eee  ee e!e+ee ee! e!e"de!e#ege$d f f e!ee ee e"e(e&f ee! ee8 ee9 ee"e9e:d e;f  ee ee ee< ee+ ee! ee+ ee+ ed"d#d$Z=e>j?d%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e7eef  ee ee ee e"e9e:d de;f ee! ee8 ee9 ee e+e+d*d+d,d-Z@e>j?d%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e7eef  ee ee ee e"e9e:d de;f ee! ee8 ee9 ee e+e+ed+d.d/ZAee d0d1d2d3ZBdd4ee!e0dd5d6d7ZCdd4ee!e0dd5d8d9ZDdd4ee!e0dd5d:d;ZEdd<ee0e0dd=d>d?ZFdd<ee0e0dd=d@dAZGdd<ee0e0dd=dBdCZHee0ddDdEdFZIddGdHdIZJeKe!dGdJdKZLeKee dGdLdMZMeKe dGdNdOZNeKeOe+e+f dGdPdQZPeKe!dGdRdSZQeQjRe!ddTdUdSZQeKejdGdVdWZSeKe(dGdXdYZTeKd0dGdZd[ZUeKeVeW dGd\d]ZXeKee dGd^d_ZYeKedGd`daZZeKe!dGdbdcZ[eKe"e!e#ege$d f f dGdddeZ\eKe!dGdfdgZ]eKe!dGdhdiZ^eKe)e* dGdjdkZ_ddGdldmZ`ddGdndoZaeeeb  eeb eec ddpdqdrZdd dGdsdtZeeeeb  eeb eec ddpdudvZf  ZgS )xrY   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_bufsize_max_line_size_max_field_size_resolve_charsetNrp   rq   TF     c                 C   s   dS )Nzutf-8rj   )rbrj   rj   rk   <lambda>       zClientSession.<lambda>)	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_envrr   trace_configsread_bufsizemax_line_sizemax_field_sizefallback_charset_resolver)base_urlr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rr   r   r   r   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|| _ | rt	
td| _|d u rt|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|| _|| _ || _!|| _"|| _#|| _$|| _%|rt&|}nt& }|| _'|d urt(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   
stacklevelrl   )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irj   rj   rk   	<genexpr>@  r   z)ClientSession.__init__.<locals>.<genexpr>)0rs   rF   
isinstancer   ro   originr=   RuntimeError	get_debug	tracebackextract_stacksys	_getframerp   r?   rt   update_cookiesrq   ru   rv   rw   rx   rH   rm   rz   warningswarnDeprecationWarningattrZevolve
ValueErrorr{   r|   r}   ry   r   r   r   r   r~   	frozensetr   r   r   r   r   Zfreezer   )selfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rr   r   r   r   r   r   real_headerstrace_configrj   rj   rk   __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   formatre   r   )r   rj   rj   rk   __init_subclass__N  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__rj   rk   r   X  s    
zClientSession.__setattr__)	_warningsr   c                 C   sV   | j sRd| i}|jd| tfi | | dd}| jd urF| j|d< | j| d S )NsourcezUnclosed client session zUnclosed client session)Zclient_sessionmessagesource_traceback)closedr   ResourceWarningrp   rs   call_exception_handler)r   r   kwargscontextrj   rj   rk   __del__b  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   rj   rj   rk   r[   m  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   ro   Zis_absolutepath
startswithjoin)r   r   r   rj   rj   rk   
_build_urls  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server_hostname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   r   r   r   r   r   r   r   c          7         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}!|pi } |} |}z |}"W n. ty }# zt||#W Y d }#~#n
d }#~#0 0 t j}$|d ur|D ]}%|$t|% q|d urFzt|}W n0 tyD }# zt||#W Y d }#~#n
d }#~#0 0 |tu rX j}&nt|tspt|d}&n|}&t j|&j|&jd}'|' }(|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  q|'$ }+z|+ t%|"\}"},|	r@|,r@td
|	d u rN|,}	|	d u r^ j&}	|d ur|	d urt'j(|v rtd j)*|"}-|d urt+ }.|.,| |.*|"}/|/r|--|/ |d urt|}n> j.rt/t0 t1|"\}}W d    n1 s0    Y   j2||"|||$||-|	|!||| j j3|||+ ||||) j4d}0ztt5|&j6|&jd4 I d H @  j7d usJ  j7j6|0|)|&dI d H }1W d   I d H  q1 I d H s0    Y  W n8 t8j9y }2 zt:d;|"|2W Y d }2~2n
d }2~20 0 |1j<d usJ |1j=d us$J |1j=j>|+t?||||&j@| j7jA||d	 zlzH|0B|1I d H }3z|3|1I d H  W n tCy   |3D   Y n0 W n tCy   |1D   Y n0 W nb tEy    Y nN tFy }2 z4|2jGd u rt|2t8j9r tH|2jI |2W Y d }2~2n
d }2~20 0  j),|3jJ|3jK |3jLdv r|
r|)D ]"}*|*M||"#|||3I d H  qD|d7 }| N|3 |r||kr|3D  tO| d jPtQ| |3jLdkr|3jRt'jSks|3jLdv r|3jRt'jTkrt'jU}d }|Vt'jWr|Xt'jW |3jYVt'jZp|3jYVt'j[}4|4d u r,qn|3\  zt|4 j] d}5W n0 tyx }# zt|4|#W Y d }#~#n
d }#~#0 0 |5j^}6|6dvr|3D  tdn|6s|"_|5}5|"` |5` krd }	|Xt'j(d  |5}"i }|3\  q qq W d    n1 s0    Y  |d u r ja}|d u r(n(tb|rB||3I d H  n|rP|3c  |(d ur~|3jdd urv|3jde|(jf n|(f  tQ| |3_g|)D ]"}*|*h||"#|||3I d H  q|3W S  tCy }# zP|'D  |(r|(f  d }(|)D ]"}*|*i||"#|||#I d H  q 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   rl   )rd   c                    s    g | ]}t  ||jd qS ))r   )rS   Ztrace_config_ctx)r   r   r   r   rj   rk   
<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   r   tracesr   )r   r   zConnection timeout to host {})	r   Zskip_payloadr   r   r   r   Ztimeout_ceil_thresholdr   r   )-  .  /  i3  i4  r   r   )r   r   )encoded)r   Zhttps z"Can redirect only to http or https)jr   r   r9   r   r    JsonPayloadrx   r   boolr   r   r   rw   _prepare_headersr   r.   setr   addr   r   rH   rz   rZ   rC   rs   r_   rd   startr   r|   r   r   r   Zsend_request_startZupdate_queryr   rI   rv   r   AUTHORIZATIONrt   Zfilter_cookiesr?   r   loadr}   r   LookupErrorrE   r   r   r   rD   r`   rq   asyncioTimeoutErrorr2   r   	transportprotocolZset_response_paramsrG   ra   Z_timeout_ceil_thresholdsendBaseExceptioncloser&   OSErrorerrnor(   argsr   r   statusZsend_request_redirectappendr3   request_infotupler   	METH_HEAD	METH_POSTMETH_GETgetCONTENT_LENGTHpopr   LOCATIONURIreleasery   schemer   r   r{   callabler   
connectionZadd_callbackcancelZ_historyZsend_request_endZsend_request_exception)7r   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   Z	redirectshistoryr   r   eZskip_headersr   Zreal_timeoutZtmhandler   tracer   Zauth_from_urlZall_cookiesZtmp_cookie_jarZreq_cookiesreqconnexcrespZr_urlZ
parsed_urlr  rj   r   rk   r   {  s   )

 

 




	








,>"



 


(




zClientSession._requestrj   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/  r0  r   r   r   r   r   r   r   r   r   r   r   r   r1  r   c                C   s8   t | j|||||||||	|
|||||||||||dS )zInitiate websocket connection.r+  )r2  _ws_connect)r   r   r   r,  r   r-  r.  r/  r0  r   r   r   r   r   r   r   r   r   r   r   r   r1  rj   rj   rk   
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< |rt|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rt|j|jd|j|jdd }|rtj|jv rdd |jtj  dD } | D ]}!|!|v r|!} qqd}"|r|jtj}#|#rz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sJ |%j%}&|&d usJ |%j&}'|'d usJ t'|&d| j(d}(|&)t*|(||( t+|&|'d||"d})W n t,y"   |-   Y n&0 | j.|(|)|||||| j(||||"dS d S )NZ	websocketZ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upgradezInvalid connection headerzInvalid challenge responsec                 S   s   g | ]}|  qS rj   )strip)r   protorj   rj   rk   r   r  s   z-ClientSession._ws_connect.<locals>.<listcomp>r   r   r   T)Zuse_maskr   
notakeover)r-  r0  r   Zclient_notakeover)/r   r   UPGRADE
CONNECTIONSEC_WEBSOCKET_VERSIONitems
setdefaultbase64	b64encodeosurandomdecodeSEC_WEBSOCKET_KEYr   SEC_WEBSOCKET_PROTOCOLORIGINrP   SEC_WEBSOCKET_EXTENSIONSr9   r[   r  r4   r  r#  r   r  lowerSEC_WEBSOCKET_ACCEPThashlibZsha1rJ   ZdigestsplitrQ   rN   r  r!  r  r
  rR   rs   Z
set_parserrL   rM   r  r  r   )*r   r   r   r,  r   r-  r.  r/  r0  r   r   r   r   r   r   r   r   r   r   r   r   r1  r   Zdefault_headerskeyvalueZsec_keyZextstrr*  Zr_keymatchr  Zresp_protocolsr9  r:  Zcompress_hdrsr)  r(  Z
conn_protor
  readerwriterrj   rj   rk   r3    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   r~   r   r   r   r  r>  r  )r   r   resultZadded_namesrM  rN  rj   rj   rk   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   rj   rj   rk   r    s    zClientSession.getc                K   s   t | jtj|fd|i|S )zPerform HTTP OPTIONS request.r   )r   r   r   METH_OPTIONSrS  rj   rj   rk   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  rS  rj   rj   rk   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   rj   rj   rk   post  s    zClientSession.postc                K   s   t | jtj|fd|i|S )zPerform HTTP PUT request.r   )r   r   r   METH_PUTrW  rj   rj   rk   put  s    zClientSession.putc                K   s   t | jtj|fd|i|S )zPerform HTTP PATCH request.r   )r   r   r   
METH_PATCHrW  rj   rj   rk   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   METH_DELETE)r   r   r   rj   rj   rk   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   rq   ru   r  r   rj   rj   rk   r    s    zClientSession.closec                 C   s   | j du p| j jS )z@Is client session closed.

        A readonly property.
        N)rq   r   r`  rj   rj   rk   r     s    zClientSession.closedc                 C   s   | j S )z(Connector instance used for the session.rq   r`  rj   rj   rk   r     s    zClientSession.connectorc                 C   s   | j S )zThe session cookies.)rt   r`  rj   rj   rk   r     s    zClientSession.cookie_jarc                 C   s   | j S )z"The session HTTP protocol version.)rw   r`  rj   rj   rk   r     s    zClientSession.versionc                 C   s   | j S ))Do URL requoting on redirection handling.)ry   r`  rj   rj   rk   rr     s    z"ClientSession.requote_redirect_url)r   r   c                 C   s   t jdtdd || _dS )rb  z=session.requote_redirect_url modification is deprecated #2778r   r   N)r   r   r   ry   )r   r   rj   rj   rk   rr   !  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   rs   r`  rj   rj   rk   r   +  s    zClientSession.loopc                 C   s   | j S )zTimeout for the session.)rz   r`  rj   rj   rk   r   3  s    zClientSession.timeoutc                 C   s   | j S )z*The default headers of the client session.)r~   r`  rj   rj   rk   r   8  s    zClientSession.headersc                 C   s   | j S )z2Headers for which autogeneration should be skipped)r   r`  rj   rj   rk   r   =  s    zClientSession.skip_auto_headersc                 C   s   | j S )z2An object that represents HTTP Basic Authorization)rv   r`  rj   rj   rk   r   B  s    zClientSession.authc                 C   s   | j S )zJson serializer callable)rx   r`  rj   rj   rk   r   G  s    zClientSession.json_serializec                 C   s   | j S )z-Should connector be closed on session closing)ru   r`  rj   rj   rk   r   L  s    zClientSession.connector_ownerc                 C   s   | j S )zGShould `ClientResponse.raise_for_status()` be called for each response.)r{   r`  rj   rj   rk   r   Q  s    zClientSession.raise_for_statusc                 C   s   | j S )z7Should the body response be automatically decompressed.)r|   r`  rj   rj   rk   r   X  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.
        )r}   r`  rj   rj   rk   r   ]  s    zClientSession.trust_envc                 C   s   | j S )z7A list of TraceConfig instances used for client tracing)r   r`  rj   rj   rk   r   g  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.
        Nra  r`  rj   rj   rk   detachl  s    zClientSession.detachc                 C   s   t dd S )NzUse async with instead)	TypeErrorr`  rj   rj   rk   	__enter__s  s    zClientSession.__enter__)exc_typeexc_valexc_tbr   c                 C   s   d S r   rj   r   rf  rg  rh  rj   rj   rk   __exit__v  s    zClientSession.__exit__c                    s   | S r   rj   r`  rj   rj   rk   
__aenter__  s    zClientSession.__aenter__c                    s   |   I d H  d S r   )r  ri  rj   rj   rk   	__aexit__  s    zClientSession.__aexit__)N)hre   rf   rg   __doc__r   r   rp   r   r   StackSummaryri   rq   r;   r   r   r5   r6   r:   r   HttpVersion11rH   rX   r  AbstractEventLooprV   rW   r   strrB   rU   r   rK   r!   r   r   r   r   rh   r@   objectrZ   r   rT   int_CharsetResolverr   r   rA   r   r   r   r   r[   r   r   r   bytesr\   r   r7   r   r   r   r  r4  r3  r  r  rU  rV  rX  rZ  r\  r^  r  propertyr   r   r   r   r   rr   setterr   r   r   r   r   r   r   r   r   r   r   r   r   rc  re  r  r   rj  rk  rl  __classcell__rj   rj   r   rk   rY      sh  
 



 


  Z8 1			
		
	
rY   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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   )r{  )r   r~  rj   rj   rk   r     s    z#_BaseRequestContextManager.__init__)argr   c                 C   s   | j |S r   )r{  r  )r   r  rj   rj   rk   r    s    z_BaseRequestContextManager.send)r  r   r   c                 O   s   | j j|i |S r   )r{  throw)r   r  r   rj   rj   rk   r    s    z _BaseRequestContextManager.throwr_  c                 C   s
   | j  S r   )r{  r  r`  rj   rj   rk   r    s    z _BaseRequestContextManager.closec                 C   s   | j  }|S r   )r{  	__await__)r   retrj   rj   rk   r    s    
z$_BaseRequestContextManager.__await__c                 C   s   |   S r   )r  r`  rj   rj   rk   __iter__  s    z#_BaseRequestContextManager.__iter__c                    s   | j I d H | _| jS r   rz  r`  rj   rj   rk   rk    s    z%_BaseRequestContextManager.__aenter__)re   rf   rg   	__slots__r	   rn   r   r  r   r  r  r   r  r  rk  rj   rj   rj   rk   ry    s   ry  c                   @   s4   e Zd ZdZeee  ee ee ddddZdS )r   rj   Nrf  r)  tbr   c                    s   | j   | j  I d H  d S r   )r|  r  Zwait_for_closer   rf  r)  r  rj   rj   rk   rl    s    
z _RequestContextManager.__aexit__	re   rf   rg   r  r   r   r  r   rl  rj   rj   rj   rk   r     s   
r   c                   @   s4   e Zd ZdZeee  ee ee ddddZdS )r2  rj   Nr  c                    s   | j  I d H  d S r   )r|  r  r  rj   rj   rk   rl    s    z"_WSRequestContextManager.__aexit__r  rj   rj   rj   rk   r2    s   
r2  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r{  r|  _sessionr}  N)r~  r   r   c                 C   s   || _ d | _|| _d S r   r  )r   r~  r   rj   rj   rk   r     s    z&_SessionRequestContextManager.__init__r_  c                    sB   z| j I d H | _W n$ ty6   | j I d H   Y n0 | jS d S r   )r{  r|  r  r  r  r`  rj   rj   rk   rk    s    z(_SessionRequestContextManager.__aenter__r  c                    s,   | j d usJ | j   | j I d H  d S r   )r|  r  r  r  rj   rj   rk   rl    s    
z'_SessionRequestContextManager.__aexit__)re   rf   rg   r  r	   r6   rY   r   rk  r   r   r  r   rl  rj   rj   rj   rk   r    s   	
r  r   Fr   )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   r   r   r   r   c                C   sh   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   r   )r=   rY   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   rj   rj   rk   r[     sJ    @	r[   )rm  r  r@  rK  r   rB  r   r   r   
contextlibr   typesr   r   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	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/   r0   r1   r2   r3   r4   Zclient_reqrepr5   r6   r7   r8   r9   Z	client_wsr:   r   r;   r<   r=   r>   	cookiejarr?   helpersr@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   Zhttp_websocketrN   rO   rP   rQ   streamsrR   tracingrS   rT   ZtypedefsrU   rV   rW   rX   __all__r   r\   srZ   rm   ri   rn   ru  rq  rt  rY   ry  r   r2  r  ro  r   rs  rr  rp  r[   rj   rj   rj   rk   <module>   s   TT0(       h %

