a
    }3e                  	   @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
mZmZ d dlmZmZmZ d dlmZmZ d dlmZmZmZmZmZmZmZmZmZmZmZm Z  d dl!Z!d dl"m#Z#m$Z$m%Z%m&Z& d dl'm(Z( dd	l)m*Z*m+Z+m,Z,m-Z-m.Z. dd
l/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9 ddl+m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA ddl,mBZBmCZCmDZDmEZE ddlFmGZG ddlHmIZI ddlJmKZKmLZLmMZMmNZNmOZO zd dlPZPd dlPmQZQ W n eRy   dZPeSZQY n0 dZTerddlUmVZV ddlWmXZX ddlYmZZZ e[dZ\e!j]ddddG dd dZ^e!j]ddddG dd dZ_G dd dZ`ePdurePjQeae`ebdfZcnebdZced eae`df eea ed  eed ed eae`df d!d"d#Zee!j]dddd$G d%d& d&Zfegegead'd(d)ZhG d*d+ d+ZiG d,d- d-e=ZjdS ).    N)md5sha1sha256)CookieErrorMorselSimpleCookie)MappingProxyTypeTracebackType)TYPE_CHECKINGAnyCallableDictIterableListMappingOptionalTupleTypeUnioncast)CIMultiDictCIMultiDictProxy	MultiDictMultiDictProxy)URL   )hdrshelpershttp	multipartpayload)AbstractStreamWriter)ClientConnectionErrorClientOSErrorClientResponseErrorContentTypeError
InvalidURLServerFingerprintMismatch)FormData)PY_36BaseTimerContext	BasicAuthHeadersMixin	TimerNoopnoopreify
set_result)SERVER_SOFTWAREHttpVersion10HttpVersion11StreamWriter)client_logger)StreamReader)DEFAULT_JSON_DECODERJSONDecoderLooseCookiesLooseHeaders
RawHeaders)
SSLContext)ClientRequestClientResponseRequestInfoFingerprint)ClientSession)
Connection)Tracez!^application/(?:[\w.+-]+?\+)?jsonT)auto_attribsfrozenslotsc                   @   s.   e Zd ZU ee ed< ded< ee ed< dS )ContentDispositiontypezMappingProxyType[str, str]
parametersfilenameN)__name__
__module____qualname__r   str__annotations__ rP   rP   H/home/pi/bot/my_env/lib/python3.9/site-packages/aiohttp/client_reqrep.pyrG   T   s   
rG   c                   @   sJ   e Zd ZU eed< eed< ded< e Zeed< ej	edddZ
d	S )
r?   urlmethodCIMultiDictProxy[str]headersreal_urlreturnc                 C   s   | j S N)rR   selfrP   rP   rQ   real_url_defaultb   s    zRequestInfo.real_url_defaultN)rK   rL   rM   r   rO   rN   attribrV   defaultr\   rP   rP   rP   rQ   r?   [   s   
r?   c                   @   sL   e Zd ZeeedZeddddZe	edddZ
ejdd	d
dZdS )r@   )          N)fingerprintrX   c                 C   sJ   t |}| j|}|s"tdn|tu s2|tu r:td|| _|| _d S )Nzfingerprint has invalid lengthz8md5 and sha1 are insecure and not supported. Use sha256.)lenHASHFUNC_BY_DIGESTLENget
ValueErrorr   r   	_hashfunc_fingerprint)r[   rc   Z	digestlenhashfuncrP   rP   rQ   __init__n   s    
zFingerprint.__init__rW   c                 C   s   | j S rY   )ri   rZ   rP   rP   rQ   rc   z   s    zFingerprint.fingerprint)	transportrX   c                 C   s`   | dsd S | d}|jdd}| | }|| jkr\| d^}}}t| j|||d S )NZ
sslcontextZ
ssl_objectT)binary_formZpeername)Zget_extra_infogetpeercertrh   digestri   r'   )r[   rl   sslobjcertgothostport_rP   rP   rQ   check~   s    


zFingerprint.check)rK   rL   rM   r   r   r   re   bytesrk   propertyrc   asyncio	Transportrv   rP   rP   rP   rQ   r@   g   s   r@   r<   )ssl
verify_sslssl_contextrc   rX   c                 C   s   |d ur2|s2t jdtdd | d ur.tdnd} |d ur`t jdtdd | d ur\tdn|} |d urt jdtdd | d urtdnt|} t| tstd| | S )	Nz/verify_ssl is deprecated, use ssl=False instead   
stacklevelzNverify_ssl, ssl_context, fingerprint and ssl parameters are mutually exclusiveFz2ssl_context is deprecated, use ssl=context insteadzCfingerprint is deprecated, use ssl=Fingerprint(fingerprint) insteadzFssl should be SSLContext, bool, Fingerprint or None, got {!r} instead.)	warningswarnDeprecationWarningrg   r@   
isinstanceSSL_ALLOWED_TYPES	TypeErrorformat)r{   r|   r}   rc   rP   rP   rQ   _merge_ssl_params   sP    
r   )rD   rF   rE   c                   @   sb   e Zd ZU eed< ee ed< eed< ee	dee
f ed< ee ed< ee ed< ee ed< dS )	ConnectionKeyrs   rt   is_sslNr{   proxy
proxy_authZproxy_headers_hash)rK   rL   rM   rN   rO   r   intboolr   r<   r@   r   r+   rP   rP   rP   rQ   r      s   
r   )response_content_typeexpected_content_typerX   c                 C   s   |dkrt | d uS || v S )Napplication/json)json_rematch)r   r   rP   rP   rQ   _is_expected_content_type   s    r   c                   @   s  e Zd ZejejejejhZej	ej
ejhZeeejhZejdejdiZdZdZdZdZdZdde dddejdddddddddddddeeeeeef  ee e e e!ee" ee# ej$ee ee% e%ee&j' ee(d  ee ee# ee) ed e*e+e%e,df ee ee-d	  d
ddZ.e%dddZ/e0e*dde%e,f dddZ1e0e2dddZ3e0edddZ4e0ee5 dddZ6e0e7dddZ8eddddZ9e*ej$ef dddd Z:ee dd!d"d#Z;e e dd$d%d&Z<ee" dd'd(d)Z=e!dd*d+d,Z>ddd-d.Z?ee# dd/d0d1Z@e!dd2d3d4ZAdOe%dd5d6d7ZBee ee# ee dd8d9d:ZCe%dd;d<ZDeEd=dd>d?d@ZFd=ddAdBdCZGdddDdEZHdddFdGZIeeeJddHdIdJZKeedKddLdMdNZLdS )Pr=   z*/*zgzip, deflate    NF)paramsrU   skip_auto_headersdatacookiesauthversioncompresschunked	expect100loopresponse_classr   r   timersessionr{   proxy_headerstracesr>   rA   rC   )rS   rR   r   rU   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r{   r   r   c                C   s  |d u rt  }t|ts"J |t|ttd fs<J |td|| _|rvt|j}|	|}|
|j |	|}|| _|d | _| | _|| _|
| _|| _d | _|d u rt}n|}|| _|d ur|nt | _|| _| rttd| _| |	 |  | | !| | "| | #| | $| | %| | &||| | '| |d usl| j| j(vrt| )  | *| |d u rg }|| _+d S )NrA   r   ),ry   Zget_event_loopr   r   rH   r   _sessionr   queryZ
with_queryextendoriginal_urlwith_fragmentrR   upperrS   r   r   r   lengthr>   r   r-   _timer_ssl	get_debug	tracebackextract_stacksys	_getframe_source_tracebackupdate_versionupdate_hostupdate_headersupdate_auto_headersupdate_cookiesupdate_content_encodingupdate_authupdate_proxyupdate_body_from_dataGET_METHODSupdate_transfer_encodingupdate_expect_continue_traces)r[   rS   rR   r   rU   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r{   r   r   qurl2Zreal_response_classrP   rP   rQ   rk      sP    













zClientRequest.__init__rW   c                 C   s   | j jdv S )N)httpswss)rR   schemerZ   rP   rP   rQ   r   >  s    zClientRequest.is_sslr<   c                 C   s   | j S rY   )r   rZ   rP   rP   rQ   r{   A  s    zClientRequest.sslc                 C   sL   | j }|r&ttdd | D }nd }t| j| j|  | j| j	| j
|S )Nc                 s   s   | ]\}}||fV  qd S rY   rP   ).0kvrP   rP   rQ   	<genexpr>I  r   z/ClientRequest.connection_key.<locals>.<genexpr>)r   hashtupleitemsr   rs   rt   r   r{   r   r   )r[   r   hrP   rP   rQ   connection_keyE  s    zClientRequest.connection_keyc                 C   s   | j j}|d usJ |S rY   )rR   raw_host)r[   retrP   rP   rQ   rs   V  s    zClientRequest.hostc                 C   s   | j jS rY   )rR   rt   rZ   rP   rP   rQ   rt   \  s    zClientRequest.portc                 C   s   t | j}t| j| j|| jS rY   )r   rU   r?   rR   rS   r   )r[   rU   rP   rP   rQ   request_info`  s    
zClientRequest.request_info)rR   rX   c                 C   s6   |j st||j|j }}|r2t||p,d| _dS )z8Update destination host, port and connection type (ssl). N)r   r&   userpasswordr   r+   r   )r[   rR   usernamer   rP   rP   rQ   r   e  s
    zClientRequest.update_host)r   rX   c                 C   sn   t |trddd |ddD }z tt|d t|d }W n" tyb   td| dY n0 || _dS )zdConvert request version to two elements tuple.

        parser HTTP version '1.1' => (1, 1)
        c                 S   s   g | ]}|  qS rP   )strip)r   partrP   rP   rQ   
<listcomp>v  r   z0ClientRequest.update_version.<locals>.<listcomp>.r   r   z#Can not parse http version number: N)r   rN   splitr   HttpVersionr   rg   r   )r[   r   r   rP   rP   rQ   r   p  s    
 zClientRequest.update_version)rU   rX   c                 C   s   t  | _tt| jj}t|r,d| d}| jjdurV| j	 sV|dt| jj 7 }|| jt
j< |rt|tttfr~| }|D ].\}}| dkr|| j|< q| j|| qdS )zUpdate request headers.[]N:rs   )r   rU   r   rN   rR   r   r   is_ipv6_addressrt   Zis_default_portr   ZHOSTr   dictr   r   r   loweradd)r[   rU   netlockeyvaluerP   rP   rQ   r     s    
zClientRequest.update_headers)r   rX   c                 C   sr   t dd t|D | _| j }|| j | j D ]\}}||vr8| j|| q8t	j
|vrnt| jt	j
< d S )Nc                 s   s   | ]}|d fV  qd S rY   rP   )r   hdrrP   rP   rQ   r     s   z4ClientRequest.update_auto_headers.<locals>.<genexpr>)r   sortedr   rU   copyr   DEFAULT_HEADERSr   r   r   Z
USER_AGENTr1   )r[   r   Zused_headersr   valrP   rP   rQ   r     s    


z!ClientRequest.update_auto_headers)r   rX   c                 C   s   |sdS t  }tj| jv r:|| jtjd | jtj= t|trN| }n|}|D ]H\}}t|t	r||j
t	 }||j
|j|j |||< qV|||< qV|jddd | jtj< dS )zUpdate request cookies header.Nr   ;)headersep)r   r   ZCOOKIErU   loadrf   r   r   r   r   r   setr   coded_valueoutputr   )r[   r   cZiter_cookiesnamer   Zmrsl_valrP   rP   rQ   r     s     





zClientRequest.update_cookies)r   rX   c                 C   sd   |du rdS | j tjd }|r4| jr`tdn,| jr`t| jtsLd| _| j| j tj< d| _	dS )zSet request content encoding.Nr   z9compress can not be set if Content-Encoding header is setdeflateT)
rU   rf   r   ZCONTENT_ENCODINGr   r   rg   r   rN   r   )r[   r   encrP   rP   rQ   r     s    z%ClientRequest.update_content_encodingc                 C   sz   | j tjd }d|v r,| jrvtdnJ| jrTtj| j v rFtdd| j tj< n"tj| j vrvtt	| j
| j tj< dS )z!Analyze transfer-encoding header.r   r   zDchunked can not be set if "Transfer-Encoding: chunked" header is setz6chunked can not be set if Content-Length header is setN)rU   rf   r   ZTRANSFER_ENCODINGr   r   rg   CONTENT_LENGTHrN   rd   body)r[   terP   rP   rQ   r     s    z&ClientRequest.update_transfer_encoding)r   rX   c                 C   sB   |du r| j }|du rdS t|tjs.td| | jtj< dS )zSet basic auth.Nz%BasicAuth() tuple is required instead)	r   r   r   r+   r   encoderU   r   ZAUTHORIZATION)r[   r   rP   rP   rQ   r     s    zClientRequest.update_auth)r   rX   c                 C   s   |d u rd S t |tr| }ztjj|d d}W n tjyN   t| }Y n0 || _| jstj	| j
vr|j}|d u r~d| _ntj	| j
vrt|| j
tj	< |j
sJ |j
 D ]*\}}|| j
v rq|| jv rq|| j
|< qd S )N)dispositionT)r   r(   r    ZPAYLOAD_REGISTRYrf   LookupErrorr   r   r   r   rU   sizerN   r   r   )r[   r   r   r   r   rP   rP   rQ   r     s.    



z#ClientRequest.update_body_from_data)expectrX   c                 C   sB   |rd| j tj< n| j tjd dkr.d}|r>| j | _d S )Nz100-continuer   T)rU   r   ZEXPECTrf   r   r   Zcreate_future	_continue)r[   r   rP   rP   rQ   r     s    z$ClientRequest.update_expect_continue)r   r   r   rX   c                 C   s.   |rt |tjstd|| _|| _|| _d S )Nz,proxy_auth must be None or BasicAuth() tuple)r   r   r+   rg   r   r   r   )r[   r   r   r   rP   rP   rQ   r     s
    zClientRequest.update_proxyc                 C   sN   | j tk rdS | j tkr4| jtjdkr.dS dS n| jtjdkrJdS dS )NF
keep-aliveTclose)r   r2   rU   rf   r   
CONNECTIONrZ   rP   rP   rQ   
keep_alive'  s    

zClientRequest.keep_aliverB   )writerconnrX   c              
      s  | j dur$| I dH  | j I dH  |j}|dus6J zLzjt| jtjr^| j|I dH  n6t| jtt	frx| jf| _| jD ]}||I dH  q~|
 I dH  W n ty } zV|jdu rt|tjr|| n(t|jd| j }||_||_|| W Y d}~npd}~0  tjyL } z|js8|| W Y d}~n8d}~0  tyz } z|| W Y d}~n
d}~0 0 W d| _nd| _0 dS )z-Support coroutines that yields bytes objects.Nz!Can not write request body for %s)r   Zdrainprotocolr   r   r    ZPayloadwriterw   	bytearray	write_eofOSErrorerrnory   TimeoutErrorset_exceptionr#   rR   __context__	__cause__ZCancelledErrorclosed	Exception_writer)r[   r  r  r  chunkexcnew_excrP   rP   rQ   write_bytes5  s8    


"zClientRequest.write_bytes)r  rX   c           	         s  | j tjkrJ| jj}|d us J t|r6d| d}| d| jj }n:| jrd| 	 sdt
| j}n | jj}| jjr|d| jj 7 }|j}|d usJ t|| jt| j| j | jt| j| j | jd}| jr|| j | jd ur|  | j | jv r"tj| jvr"tj| jvr"d| jtj< | jtj}|sb|  rR| jt krbd}n| jt!krbd}|d urx|| jtj< d	"| j || j}|#|| jI d H  | j$| %||| _&| j'}|d usJ || j | j(| j&| j)| j*| j+| j,| j| j-d
	| _.| j.S )Nr   r   r   ?)Zon_chunk_sentZon_headers_sentzapplication/octet-streamr   r   z{0} {1} HTTP/{2[0]}.{2[1]})r  continue100r   r   r   r   r   )/rS   r   ZMETH_CONNECTrR   r   r   r   rt   r   r   rN   raw_pathZraw_query_stringr  r4   r   	functoolspartial_on_chunk_request_sent_on_headers_request_sentr   Zenable_compressionr   Zenable_chunkingPOST_METHODSCONTENT_TYPEr   rU   rf   r  r  r   r2   r3   r   Zwrite_headersZcreate_taskr  r  r   r   r   r   r   r   r   response)	r[   r  Zconnect_hostpathr  r  
connectionZstatus_liner   rP   rP   rQ   send]  s|    







zClientRequest.sendc                    s.   | j d ur*z| j I d H  W d | _ nd | _ 0 d S rY   )r  rZ   rP   rP   rQ   r     s    
zClientRequest.closec                 C   s(   | j d ur$| j s| j   d | _ d S rY   )r  r   	is_closedcancelrZ   rP   rP   rQ   	terminate  s    


zClientRequest.terminate)rS   rR   r  rX   c                    s$   | j D ]}||||I d H  qd S rY   )r   Zsend_request_chunk_sent)r[   rS   rR   r  tracerP   rP   rQ   r    s    
z$ClientRequest._on_chunk_request_sentzCIMultiDict[str])rS   rR   rU   rX   c                    s$   | j D ]}||||I d H  qd S rY   )r   Zsend_request_headers)r[   rS   rR   rU   r&  rP   rP   rQ   r    s    
z&ClientRequest._on_headers_request_sent)F)MrK   rL   rM   r   ZMETH_GETZ	METH_HEADZMETH_OPTIONSZ
METH_TRACEr   Z
METH_PATCHZ	METH_POSTZMETH_PUTr  unionZMETH_DELETEZALL_METHODSZACCEPTACCEPT_ENCODINGr   r   r   r  r  r   	frozensetr   r3   rN   r   r   r   r:   r   r   r9   r+   r   r   ry   AbstractEventLoopr   r*   r   r<   r@   r   rk   r   rx   r{   r   r   rs   r   rt   r?   r   r   r   r   r   r   r   r   r   r   r   r   r  r!   r  r"  r   r%  rw   r  r  rP   rP   rP   rQ   r=      s   

J"(Qr=   c                   @   s  e Zd ZU dZdZeed< dZdZe	ed< dZ
ded< dZeed< dZdZeej ed< dZd	Zeed
ed eeed ejddd
ddZeedddZeedddZeedddZeedddZ eddddZ!eedddZ"eedddZ#eee$ dd d!Z%e&fe'dd"d#d$Z(edd%d&Z)e*ed' dd(d)Z+ee,d* dd+d,Z-ed-dd.d/Z.d'd d0d1d2Z/ddd3d4Z0e*e1dd5d6Z2ddd7d8Z3e'dd9d:Z4e*e1dd;d<Z5ddd=d>Z6ddd?d@Z7dddAdBZ8dddCdDZ9e:ddEdFZ;eddGdHZ<dWee eedJdKdLZ=de>dMdNee e?ee e'dOdPdQZ@d ddRdSZAeeBeC  eeC eeD ddTdUdVZEdS )Xr>   NstatuscontentrT   _headers_raw_headersr   TFzasyncio.Task[None]zasyncio.Future[bool]rC   rA   )
rS   rR   r  r  r   r   r   r   r   rX   c          
      C   s   t |tsJ || _t | _|| _|d | _d | _|| _	|| _
d| _d| _|| _|d ur^|nt | _i | _|| _|| _|	| _|	d u rdd | _n|	j| _| rttd| _d S )NTrP   c                  W   s   dS )Nutf-8rP   )ru   rP   rP   rQ   <lambda>  r   z)ClientResponse.__init__.<locals>.<lambda>r   )r   r   rS   r   r   	_real_urlr   _url_bodyr  r   _closed_history_request_infor-   r   _cacher   _loopr   _resolve_charsetr   r   r   r   r   r   )
r[   rS   rR   r  r  r   r   r   r   r   rP   rP   rQ   rk     s,    zClientResponse.__init__rW   c                 C   s   | j S rY   )r2  rZ   rP   rP   rQ   rR     s    zClientResponse.urlc                 C   s   t jdtdd | jS )NzDeprecated, use .url #1654   r   )r   r   r   r2  rZ   rP   rP   rQ   url_obj  s    zClientResponse.url_objc                 C   s   | j S rY   )r1  rZ   rP   rP   rQ   rV     s    zClientResponse.real_urlc                 C   s   | j jd usJ | j jS rY   )r2  rs   rZ   rP   rP   rQ   rs     s    zClientResponse.hostc                 C   s   | j S rY   )r-  rZ   rP   rP   rQ   rU     s    zClientResponse.headersc                 C   s   | j S rY   )r.  rZ   rP   rP   rQ   raw_headers  s    zClientResponse.raw_headersc                 C   s   | j S rY   )r6  rZ   rP   rP   rQ   r     s    zClientResponse.request_infoc                 C   sF   | j tj}|d u rd S t|\}}t|}t|}t|||S rY   )	r-  rf   r   ZCONTENT_DISPOSITIONr   parse_content_dispositionr   Zcontent_disposition_filenamerG   )r[   rawZdisposition_typeZ
params_dctr   rJ   rP   rP   rQ   content_disposition"  s    
z"ClientResponse.content_disposition)	_warningsrX   c                 C   s   | j r
d S | jd ur| j  |   | j rtr>d| i}ni }|jd| tfi | | dd}| j	rv| j	|d< | j
| d S )NsourcezUnclosed response zUnclosed response)Zclient_responsemessageZsource_traceback)r4  _connectionrelease_cleanup_writerr8  r   r)   r   ResourceWarningr   Zcall_exception_handler)r[   r@  kwargscontextrP   rP   rQ   __del__,  s    





zClientResponse.__del__c                 C   sb   t  }t| j}| jr.| jddd}n| j}td|| j	||d t| j
|d | S )Nasciibackslashreplacez<ClientResponse({}) [{} {}]>)file)ioStringIOrN   rR   reasonr   decodeprintr   r+  rU   getvalue)r[   outZascii_encodable_urlZascii_encodable_reasonrP   rP   rQ   __repr__?  s"    
zClientResponse.__repr__rB   c                 C   s   | j S rY   )rC  rZ   rP   rP   rQ   r!  Q  s    zClientResponse.connection)r>   .c                 C   s   | j S )z2A sequence of of responses, if redirects occurred.)r5  rZ   rP   rP   rQ   historyU  s    zClientResponse.historyz/MultiDictProxy[MultiDictProxy[Union[str, URL]]]c                 C   s   d | jdg }|s"tt S t }td|D ]}td|}|d u rNq4| \}}|ddd  }t }|D ]:}	td|	tj	}|d u rqv| \}
}}}|
|
| qv|d|}
|
d	| j t| |
|
t| q4t|S )
Nz, linkz	,(?=\s*<)z\s*<(.*)>(.*)r   r   z%^\s*(\S*)\s*=\s*(['\"]?)(.*?)(\2)\s*$relrR   )joinrU   getallr   r   rer   r   groupsMr   rf   rR   r   )r[   Z	links_strlinksr   r   rR   Z
params_strr   rV  paramr   ru   r   rP   rP   rQ   r]  Z  s*    
zClientResponse.links)r!  rX   c                    st  d| _ |j| _|| _| j z| j}| I dH \}}W nD tjy| } z*t| j	| j
|j|j|jd|W Y d}~n
d}~0 0 |jdk s|jdks|jdkrq| jdurt| jd d| _qW d   n1 s0    Y  || j |j| _|j| _|j| _|j| _|j| _|| _| jtjdD ]J}z| j| W n2 tyj } zt d	| W Y d}~n
d}~0 0 q$| S )
zStart response processing.FNr+  rB  rU   d      e   TrP   z!Can not load response cookies: %s)!r4  r  	_protocolrC  r   readr   ZHttpProcessingErrorr$   r   rU  coderB  rU   r   r0   Zon_eof_response_eofr   r+  rO  r-  r<  r.  r,  rY  r   Z
SET_COOKIEr   r   r   r5   warning)r[   r!  r  rB  r    r  r   rP   rP   rQ   start~  sF    
&&zClientResponse.startc                 C   sP   | j r
d S | jd ur>| jjd ur.| jjjr.d S | j  d | _d| _ |   d S NT)r4  rC  r  ZupgradedrD  rE  rZ   rP   rP   rQ   rf    s    


zClientResponse._response_eofc                 C   s   | j S rY   )r4  rZ   rP   rP   rQ   r    s    zClientResponse.closedc                 C   s\   | j s|   | jrd S d| _| jd u s2| j r6d S | jd urP| j  d | _|   d S ri  )	_released_notify_contentr4  r8  r#  rC  r   rE  rZ   rP   rP   rQ   r     s    

zClientResponse.closec                 C   sH   | j s|   | jrt S d| _| jd ur:| j  d | _|   t S ri  )rj  rk  r4  r.   rC  rD  rE  rZ   rP   rP   rQ   rD    s    

zClientResponse.releasec                 C   s
   d| j kS )zReturns ``True`` if ``status`` is less than ``400``, ``False`` if not.

        This is **not** a check for ``200 OK`` but a check that the response
        status is under 400.
        i  )r+  rZ   rP   rP   rQ   ok  s    zClientResponse.okc                 C   s<   | j s8| jd usJ |   t| j| j| j| j| jdd S )Nr_  )rl  rO  rD  r$   r   rU  r+  rU   rZ   rP   rP   rQ   raise_for_status  s    zClientResponse.raise_for_statusc                 C   s$   | j d ur| j   d | _ d | _d S rY   )r  r$  r   rZ   rP   rP   rQ   rE    s    

zClientResponse._cleanup_writerc                 C   s.   | j }|r$| d u r$|td d| _d S )NConnection closedT)r,  	exceptionr  r"   rj  )r[   r,  rP   rP   rQ   rk    s    zClientResponse._notify_contentc                    s6   | j d ur*z| j I d H  W d | _ nd | _ 0 |   d S rY   )r  rD  rZ   rP   rP   rQ   wait_for_close  s
    
zClientResponse.wait_for_closec                    sz   | j du rfz<| j I dH | _ | jD ]}|| j| j| j I dH  q$W qt tyb   |    Y qt0 n| j	rtt
d| j S )zRead response payload.Nrn  )r3  r,  rd  r   Zsend_response_chunk_receivedrS   rR   BaseExceptionr   rj  r"   )r[   r&  rP   rP   rQ   rd    s    


zClientResponse.readc                 C   s   | j tjd }t|}|jd}|rdt	t
 t|jW  d    S 1 sZ0    Y  |jdkr|jdks|jdkrdS | jd u rtd| | | jS )Nr   charsetZapplicationjsonZrdapr/  z7Cannot compute fallback encoding of a not yet read body)rU   rf   r   r  r   r   Zparse_mimetyperI   
contextlibsuppressr   codecslookupr   rH   subtyper3  RuntimeErrorr9  )r[   ctypemimetypeencodingrP   rP   rQ   get_encoding   s"    
*

zClientResponse.get_encodingstrict)r|  errorsrX   c                    s8   | j du r|  I dH  |du r(|  }| j j||dS )z!Read response payload and decode.N)r  )r3  rd  r}  rP  )r[   r|  r  rP   rP   rQ   text7  s    
zClientResponse.textr   )r|  loadscontent_type)r|  r  r  rX   c                   s   | j du r|  I dH  |rT| jtjd }t||sTt| j	| j
d| | jd| j  }|sfdS |du rv|  }|||S )zRead and decodes JSON response.Nr   z3Attempt to decode JSON with unexpected mimetype: %s)rB  rU   )r3  rd  rU   rf   r   r  r   r   r%   r   rU  r   r}  rP  )r[   r|  r  r  rz  strippedrP   rP   rQ   rs  C  s"    

	
zClientResponse.jsonc                    s   | S rY   rP   rZ   rP   rP   rQ   
__aenter__c  s    zClientResponse.__aenter__)exc_typeexc_valexc_tbrX   c                    s   |    d S rY   )rD  )r[   r  r  r  rP   rP   rQ   	__aexit__f  s    	zClientResponse.__aexit__)Nr~  )FrK   rL   rM   r   r+  r   rO   rO  r,  r6   r-  r.  r;   rC  r   r   r   StackSummaryr4  rj  rN   r   r*   r?   r   ry   r*  rk   r/   rR   r;  rV   rs   rU   r<  r   rG   r?  r   r   rI  rT  rx   r!  r   rU  r]  rh  rf  r   r  r   rD  rl  rm  rE  rk  rp  rw   rd  r}  r  r7   r8   rs  r  r   rq  r	   r  rP   rP   rP   rQ   r>     s   
,	#3 
r>   )kry   rv  rt  r  rM  rZ  r   r   r   hashlibr   r   r   http.cookiesr   r   r   typesr   r	   typingr
   r   r   r   r   r   r   r   r   r   r   r   r]   Z	multidictr   r   r   r   Zyarlr   r   r   r   r   r   r    abcr!   Zclient_exceptionsr"   r#   r$   r%   r&   r'   Zformdatar(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   logr5   Zstreamsr6   Ztypedefsr7   r8   r9   r:   r;   r{   r<   ImportErrorobject__all__clientrA   Z	connectorrB   tracingrC   compiler   srG   r?   r@   r   rH   r   rw   r   r   rN   r   r=   r>   rP   rP   rP   rQ   <module>   sx   8 (


"
5   p