o
    GEDi                     @   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 eRy   dZPeSZQY nw 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r@ePjQeae`ebdfZcnebdZcd ed!eae`df d"eea d#ed! d$eed d%ed!eae`df f
d&d'Zee!j]dddd(G d)d* d*Zfd+egd,egd%eafd-d.ZhG d/d0 d0ZiG d1d2 d2e=ZjdS )3    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   d/var/www/www-root/data/www/ovozai.pdev.uz/venv/lib/python3.10/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	defddZ
d	S )
r?   urlmethodCIMultiDictProxy[str]headersreal_urlreturnc                 C      | j S N)rR   selfrP   rP   rQ   real_url_defaultb      zRequestInfo.real_url_defaultN)rK   rL   rM   r   rO   rN   attribrV   defaultr\   rP   rP   rP   rQ   r?   [   s   
 r?   c                   @   sP   e Zd ZeeedZdeddfddZe	defddZ
d	ejddfd
dZdS )r@   )          fingerprintrW   Nc                 C   sH   t |}| j|}|std|tu s|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[   rd   	digestlenhashfuncrP   rP   rQ   __init__n   s   
zFingerprint.__init__c                 C   rX   rY   )rj   rZ   rP   rP   rQ   rd   z   r]   zFingerprint.fingerprint	transportc                 C   s`   | dsd S | d}|jdd}| | }|| jkr.| d^}}}t| j|||d S )N
sslcontext
ssl_objectT)binary_formpeername)get_extra_infogetpeercertri   digestrj   r'   )r[   rn   sslobjcertgothostport_rP   rP   rQ   check~   s   


zFingerprint.check)rK   rL   rM   r   r   r   rf   bytesrm   propertyrd   asyncio	Transportr|   rP   rP   rP   rQ   r@   g   s    r@   sslr<   
verify_sslssl_contextrd   rW   c                 C   s   |d ur|st jdtdd | d urtdd} |d ur.t jdtdd | d ur,td|} |d urFt jdtdd | d urBtdt|} t| tsRt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DeprecationWarningrh   r@   
isinstanceSSL_ALLOWED_TYPES	TypeErrorformat)r   r   r   rd   rP   rP   rQ   _merge_ssl_params   sN   
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 )	ConnectionKeyry   rz   is_sslNr   proxy
proxy_auth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_typec                 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deded	eeeef  d
ee de e de!dee" dee# dej$dee dee% de%dee&j' dee(d  dee dee# dee) ded de*e+e%e,df dee dee-d  f*dd Z.d!e%fd"d#Z/e0d!e*d$de%e,f fd%d&Z1e0d!e2fd'd(Z3e0d!efd)d*Z4e0d!ee5 fd+d,Z6e0d!e7fd-d.Z8ded!dfd/d0Z9de*ej$ef d!dfd1d2Z:d
ee d!dfd3d4Z;de e d!dfd5d6Z<dee" d!dfd7d8Z=de!d!dfd9d:Z>dZd;d<Z?dee# d!dfd=d>Z@d?e!d!dfd@dAZAd[dBe%d!dfdCdDZBdee dee# dee d!dfdEdFZCd!e%fdGdHZDdIeEdJdKd!dfdLdMZFd\dNdOZGdZdPdQZHdZdRdSZIdededTeJd!dfdUdVZKdeded
dWd!dfdXdYZLdS )]r=   z*/*zgzip, deflate    NF)paramsrU   skip_auto_headersdatacookiesauthversioncompresschunked	expect100loopresponse_classr   r   timersessionr   proxy_headerstracesrS   rR   r   rU   r   r   r   r   r   r   r   r   r   r   r>   r   r   r   r   rA   r   r   r   rC   c                C   s  |d u rt  }t|tsJ |t|ttd fsJ |td|| _|r;t|j}|	|}|
|j |	|}|| _|d | _| | _|| _|
| _|| _d | _|d u r\t}n|}|| _|d urg|nt | _|| _| r{ttd| _| |	 |  | | !| | "| | #| | $| | %| | &||| | '| |d us| j| j(vr| )  | *| |d u rg }|| _+d S )NrA   r   ),r   get_event_loopr   r   rH   r   _sessionr   query
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url2real_response_classrP   rP   rQ   rm      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   rX   rY   )r   rZ   rP   rP   rQ   r   A  r]   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  s    z/ClientRequest.connection_key.<locals>.<genexpr>)r   hashtupleitemsr   ry   rz   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   ry   V  s   zClientRequest.hostc                 C   s   | j jS rY   )rR   rz   rZ   rP   rP   rQ   rz   \  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_infoc                 C   s:   |j st||j|j}}|rt||pd| _dS 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_hostc                 C   sj   t |tr0dd |ddD }ztt|d t|d }W n ty/   td| dw || _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  s    z0ClientRequest.update_version.<locals>.<listcomp>.r   r   z#Can not parse http version number: N)r   rN   splitr   HttpVersionr   rh   r   )r[   r   r   rP   rP   rQ   r   p  s   
 
zClientRequest.update_versionc                 C   s   t  | _tt| jj}t|rd| d}| jjdur+| j	 s+|dt| jj 7 }|| jt
j< |rYt|tttfr?| }|D ]\}}| dkrQ|| j|< qA| j|| qAdS dS )zUpdate request headers.[]N:ry   )r   rU   r   rN   rR   r   r   is_ipv6_addressrz   is_default_portr   HOSTr   dictr   r   r   loweradd)r[   rU   netlockeyvaluerP   rP   rQ   r     s    
zClientRequest.update_headersc                 C   sv   t dd t|D | _| j }|| j | j D ]\}}||vr+| j|| qt	j
|vr9t| jt	j
< d S 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   
USER_AGENTr1   )r[   r   used_headersr   valrP   rP   rQ   r     s   


z!ClientRequest.update_auto_headersc                 C   s   |sdS t  }tj| jv r|| jtjd | jtj= t|tr'| }n|}|D ]$\}}t|t	rK||j
t	 }||j
|j|j |||< q+|||< q+|jddd | jtj< dS )zUpdate request cookies header.Nr   ;)headersep)r   r   COOKIErU   loadrg   r   r   r   r   r   setr   coded_valueoutputr   )r[   r   citer_cookiesnamer   mrsl_valrP   rP   rQ   r     s    





zClientRequest.update_cookiesc                 C   sj   |du rdS | j tjd }|r| jrtddS | jr3t| jts'd| _| j| j tj< d| _	dS dS )zSet request content encoding.Nr   z9compress can not be set if Content-Encoding header is setdeflateT)
rU   rg   r   CONTENT_ENCODINGr   r   rh   r   rN   r   )r[   r   encrP   rP   rQ   r     s   
z%ClientRequest.update_content_encodingc                 C   s   | j tjd }d|v r| jrtddS | jr,tj| j v r$tdd| j tj< dS tj| j vr?tt	| j
| j tj< dS 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   rg   r   TRANSFER_ENCODINGr   r   rh   CONTENT_LENGTHrN   re   body)r[   terP   rP   rQ   r     s    z&ClientRequest.update_transfer_encodingc                 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   AUTHORIZATION)r[   r   rP   rP   rQ   r     s   zClientRequest.update_authr
  c                 C   s   |d u rd S t |tr| }z
tjj|d d}W n tjy'   t| }Y nw || _| jsMtj	| j
vrM|j}|d u r?d| _ntj	| j
vrMt|| j
tj	< |j
sRJ |j
 D ]\}}|| j
v raqW|| jv rgqW|| j
|< qWd S )N)dispositionT)r   r(   r    PAYLOAD_REGISTRYrg   LookupErrorr
  r   r   r	  rU   sizerN   r   r   )r[   r
  r  r   r   rP   rP   rQ   r     s2   



z#ClientRequest.update_body_from_dataexpectc                 C   sF   |r	d| j tj< n| j tjd dkrd}|r!| j | _d S d S )Nz100-continuer   T)rU   r   EXPECTrg   r   r   create_future	_continue)r[   r  rP   rP   rQ   r     s   z$ClientRequest.update_expect_continuec                 C   s.   |rt |tjstd|| _|| _|| _d S )Nz,proxy_auth must be None or BasicAuth() tuple)r   r   r+   rh   r   r   r   )r[   r   r   r   rP   rP   rQ   r     s
   
zClientRequest.update_proxyc                 C   sL   | j tk rdS | j tkr| jtjdkrdS dS | jtjdkr$dS dS )NF
keep-aliveTclose)r   r2   rU   rg   r   
CONNECTIONrZ   rP   rP   rQ   
keep_alive'  s   

zClientRequest.keep_alivewriterconnrB   c              
      s  | j dur| I dH  | j I dH  |j}|dusJ zz5t| jtjr/| j|I dH  nt| jtt	fr<| jf| _| jD ]
}||I dH  q?|
 I dH  W ng ty } z+|jdu rkt|tjrk|| nt|jd| j }||_||_|| W Y d}~n;d}~w tjy } z|js|| W Y d}~n'd}~w ty } z|| W Y d}~nd}~ww W d| _dS W d| _dS W d| _dS W d| _dS d| _w )z-Support coroutines that yields bytes objects.Nz!Can not write request body for %s)r  drainprotocolr   r
  r    Payloadwriter}   	bytearray	write_eofOSErrorerrnor   TimeoutErrorset_exceptionr#   rR   __context__	__cause__CancelledErrorclosed	Exception_writer)r[   r  r  r  chunkexcnew_excrP   rP   rQ   write_bytes5  sP   






 
 zClientRequest.write_bytesc           	         s  | j tjkr&| jj}|d usJ t|rd| d}| d| jj }n| jr3| 	 s3t
| j}n| jj}| jjrC|d| jj 7 }|j}|d usLJ t|| jt| j| j | jt| j| j | jd}| jrn|| j | jd urw|  | j | jv rtj| jvrtj| jvrd| jtj< | jtj}|s|  r| jt krd}n| jt!krd}|d ur|| 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   ?)on_chunk_senton_headers_sentzapplication/octet-streamr  r  z{0} {1} HTTP/{2[0]}.{2[1]})r  continue100r   r   r   r   r   )/rS   r   METH_CONNECTrR   r   r   r   rz   r   r   rN   raw_pathraw_query_stringr  r4   r   	functoolspartial_on_chunk_request_sent_on_headers_request_sentr   enable_compressionr   enable_chunkingPOST_METHODSCONTENT_TYPEr   rU   rg   r  r  r   r2   r3   r   write_headerscreate_taskr/  r+  r   r   r  r   r   r   r   response)	r[   r  connect_hostpathr  r  
connectionstatus_liner   rP   rP   rQ   send]  sz   




zClientRequest.sendc                    s2   | j d urz| j I d H  W d | _ d S d | _ w 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 d S rY   )r+  r   	is_closedcancelrZ   rP   rP   rQ   	terminate  s
   



zClientRequest.terminater,  c                    &   | j D ]}||||I d H  qd S rY   )r   send_request_chunk_sent)r[   rS   rR   r,  tracerP   rP   rQ   r9    s   
z$ClientRequest._on_chunk_request_sentzCIMultiDict[str]c                    rJ  rY   )r   send_request_headers)r[   rS   rR   rU   rL  rP   rP   rQ   r:    s   
z&ClientRequest._on_headers_request_sentrW   N)F)r  rB   rW   r>   )MrK   rL   rM   r   METH_GET	METH_HEADMETH_OPTIONS
METH_TRACEr   
METH_PATCH	METH_POSTMETH_PUTr=  unionMETH_DELETEALL_METHODSACCEPTACCEPT_ENCODINGr   r
  r   rA  r+  r  	frozensetr   r3   rN   r   r   r   r:   r   r   r9   r+   r   r   r   AbstractEventLoopr   r*   r   r<   r@   r   rm   r   r~   r   r   r   ry   r   rz   r?   r   r   r   r   r   r   r   r   r   r   r   r   r  r!   r/  rF  r  rI  r}   r9  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d
ededdded dededed dejddddfddZedefddZedefddZedefddZedefd d!Z edcd"d#Z!edefd$d%Z"edefd&d'Z#edee$ fd(d)Z%e&fd*e'ddfd+d,Z(defd-d.Z)e*ded/ fd0d1Z+ede,d2 fd3d4Z-eddd6d7Z.ded9d:Z/dfd;d<Z0e*de1fd=d>Z2dfd?d@Z3de'fdAdBZ4e*de1fdCdDZ5dfdEdFZ6dfdGdHZ7dfdIdJZ8dfdKdLZ9de:fdMdNZ;defdOdPZ<dgdRee dSedefdTdUZ=de>dVdWdRee dXe?dYee de'fdZd[Z@dhd\d]ZAd^eeBeC  d_eeC d`eeD ddfdadbZEdS )ir>   NstatuscontentrT   _headers_raw_headersr   TFrS   rR   r  zasyncio.Task[None]r3  zasyncio.Future[bool]r   r   r   rC   r   r   rA   rW   c          
      C   s   t |tsJ || _t | _|| _|d | _d | _|| _	|| _
d| _d| _|| _|d ur/|nt | _i | _|| _|| _|	| _|	d u rIdd | _n|	j| _| r\ttd| _d S d S )NTrP   c                  W   s   dS )Nutf-8rP   )r{   rP   rP   rQ   <lambda>  s    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  r3  r   r   r   r   r   rP   rP   rQ   rm     s.   zClientResponse.__init__c                 C   rX   rY   )rd  rZ   rP   rP   rQ   rR     r]   zClientResponse.urlc                 C   s   t jdtdd | jS )NzDeprecated, use .url #1654   r   )r   r   r   rd  rZ   rP   rP   rQ   url_obj  s   zClientResponse.url_objc                 C   rX   rY   )rc  rZ   rP   rP   rQ   rV     r]   zClientResponse.real_urlc                 C   s   | j jd usJ | j jS rY   )rd  ry   rZ   rP   rP   rQ   ry     s   zClientResponse.hostc                 C   rX   rY   )r_  rZ   rP   rP   rQ   rU     r]   zClientResponse.headersc                 C   rX   rY   )r`  rZ   rP   rP   rQ   raw_headers  r]   zClientResponse.raw_headersc                 C   rX   rY   )rh  rZ   rP   rP   rQ   r     r]   zClientResponse.request_infoc                 C   sF   | j tj}|d u rd S t|\}}t|}t|}t|||S rY   )	r_  rg   r   CONTENT_DISPOSITIONr   parse_content_dispositionr   content_disposition_filenamerG   )r[   rawdisposition_type
params_dctr   rJ   rP   rP   rQ   content_disposition"  s   
z"ClientResponse.content_disposition	_warningsc                 C   s   | j rd S | jd urC| j  |   | j rEtrd| i}ni }|jd| tfi | | dd}| j	r;| j	|d< | j
| d S d S d S )NsourcezUnclosed response zUnclosed response)client_responsemessagesource_traceback)rf  _connectionrelease_cleanup_writerrj  r   r)   r   ResourceWarningr   call_exception_handler)r[   rv  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[   outascii_encodable_urlascii_encodable_reasonrP   rP   rQ   __repr__?  s"   
zClientResponse.__repr__rB   c                 C   rX   rY   )r{  rZ   rP   rP   rQ   rD  Q  r]   zClientResponse.connection)r>   .c                 C   rX   )z2A sequence of of responses, if redirects occurred.)rg  rZ   rP   rP   rQ   historyU  s   zClientResponse.history/MultiDictProxy[MultiDictProxy[Union[str, URL]]]c                 C   s   d | jdg }|stt S t }td|D ]Y}td|}|d u r'q| \}}|ddd  }t }|D ]}	td|	tj	}|d u rJq;| \}
}}}|
|
| q;|d|}
|
d	| j t| |
|
t| qt|S )
Nz, linkz	,(?=\s*<)z\s*<(.*)>(.*)r   r   z%^\s*(\S*)\s*=\s*(['\"]?)(.*?)(\2)\s*$relrR   )joinrU   getallr   r   rer   r   groupsMr   rg   rR   r   )r[   	links_strlinksr   r   rR   
params_strr   r  paramr   r{   r   rP   rP   rQ   r  Z  s*   
zClientResponse.linksrD  c                    sf  d| _ |j| _|| _| jS 	 z| j}| I dH \}}W n tjy: } zt| j	| j
|j|j|jd|d}~ww |jdk sJ|jdksJ|jdkrKn| jdurYt| jd d| _qW d   n1 sdw   Y  || j |j| _|j| _|j| _|j| _|j| _|| _| jtjdD ]"}z| j| W q ty } zt d	| W Y d}~qd}~ww | S )
zStart response processing.FTNr]  ry  rU   d      e   rP   z!Can not load response cookies: %s)!rf  r  	_protocolr{  r   readr   HttpProcessingErrorr$   r   r  codery  rU   r  r0   on_eof_response_eofr   r]  r  r_  rn  r`  r^  r  r   
SET_COOKIEr   r   r   r5   warning)r[   rD  r  ry  r    r-  r   rP   rP   rQ   start~  sX   	
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)rf  r{  r  upgradedr|  r}  rZ   rP   rP   rQ   r    s   

zClientResponse._response_eofc                 C   rX   rY   )rf  rZ   rP   rP   rQ   r)    r]   zClientResponse.closedc                 C   s\   | j s|   | jrd S d| _| jd u s| j rd S | jd ur(| j  d | _|   d S r  )	_released_notify_contentrf  rj  rG  r{  r  r}  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 r  )r  r  rf  r.   r{  r|  r}  rZ   rP   rP   rQ   r|    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 s| jd us
J |   t| j| j| j| j| jdd S )Nr  )r  r  r|  r$   r   r  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+  rH  r   rZ   rP   rP   rQ   r}    s   


zClientResponse._cleanup_writerc                 C   s.   | j }|r| d u r|td d| _d S )NConnection closedT)r^  	exceptionr%  r"   r  )r[   r^  rP   rP   rQ   r    s   
zClientResponse._notify_contentc                    s8   | j d urz| j I d H  W d | _ nd | _ w |   d S rY   )r+  r|  rZ   rP   rP   rQ   wait_for_close  s   
zClientResponse.wait_for_closec                    sz   | j du r3z | j I dH | _ | jD ]}|| j| j| j I dH  qW | j S  ty2   |    w | j	r:t
d| j S )zRead response payload.Nr  )re  r^  r  r   send_response_chunk_receivedrS   rR   BaseExceptionr  r  r"   )r[   rL  rP   rP   rQ   r    s"   


zClientResponse.readc                 C   s   | j tjd }t|}|jd}|r2t	t
 t|jW  d    S 1 s-w   Y  |jdkrC|jdksA|jdkrCdS | jd u rLtd| | | jS )Nr   charsetapplicationjsonrdapra  z7Cannot compute fallback encoding of a not yet read body)rU   rg   r   r>  r   r   parse_mimetyperI   
contextlibsuppressr  codecslookupr  rH   subtypere  RuntimeErrorrk  )r[   ctypemimetypeencodingrP   rP   rQ   get_encoding   s   

 

zClientResponse.get_encodingstrictr  errorsc                    s:   | j du r|  I dH  |du r|  }| j j||dS )z!Read response payload and decode.N)r  )re  r  r  r  )r[   r  r  rP   rP   rQ   text7  s   
zClientResponse.textr   )r  loadscontent_typer  r  c                   s   | j du r|  I dH  |r+| jtjd }t||s+t| j	| j
d| | jd| j  }|s4dS |du r<|  }|||S )zRead and decodes JSON response.Nr   z3Attempt to decode JSON with unexpected mimetype: %s)ry  rU   )re  r  rU   rg   r   r>  r   r   r%   r   r  r   r  r  )r[   r  r  r  r  strippedrP   rP   rQ   r  C  s$   


	zClientResponse.jsonc                    s   | S rY   rP   rZ   rP   rP   rQ   
__aenter__c  s   zClientResponse.__aenter__exc_typeexc_valexc_tbc                    s   |    d S rY   )r|  )r[   r  r  r  rP   rP   rQ   	__aexit__f  s   	zClientResponse.__aexit__)rW   rT   )rW   r  )rD  rB   rW   r>   rN  )Nr  )rW   r>   )FrK   rL   rM   r   r]  r   rO   r  r^  r6   r_  r`  r;   r{  r   r   r   StackSummaryrf  r  rN   r   r*   r?   r   r   r\  rm   r/   rR   rm  rV   ry   rU   rn  r   rG   ru  r   r   r  r  r~   rD  r   r  r  r  r  r   r)  r  r|  r  r  r}  r  r  r}   r  r  r  r7   r8   r  r  r   r  r	   r  rP   rP   rP   rQ   r>     s   
 	

,	
#
3






 
r>   )kr   r  r  r7  r  r  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^   	multidictr   r   r   r   yarlr   r   r   r   r   r   r    abcr!   client_exceptionsr"   r#   r$   r%   r&   r'   formdatar(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   logr5   streamsr6   typedefsr7   r8   r9   r:   r;   r   r<   ImportErrorobject__all__clientrA   	connectorrB   tracingrC   compiler   srG   r?   r@   r   rH   r   r}   r   r   rN   r   r=   r>   rP   rP   rP   rQ   <module>   s    8 (


"
5
   p