
    g                     $   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; ddl+m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZF ddl,mGZGmHZHmIZImJZJmKZK ddlLmMZM ddlNmOZO ddlPmQZQmRZRmSZSmTZTmUZUmVZV erd dlWZWd dlWmXZX n	 d dlWZWd dlWmXZX dZ[erddl\m]Z] ddl^m_Z_ ddl`maZa  ej                  d      Zc ej                  d      ZddeefdZf e!j                  ddd       G d d             Zh G d  d!e      Zi G d" d#ei      Zj G d$ d%      ZkeWeWj                  elek emd      fZnn
el emd      fZnd&e d'elekf   d(eel   d)ed'   d*eeo   de d'elekf   f
d+Zp eqd,      Zr G d- d.e      Zsd/eed0eedelfd1Zt G d2 d3      Zu e2d4      Zv G d5 d6e?      Zwy# eY$ r dZWeZZXY w xY w)7    N)md5sha1sha256)CookieErrorMorselSimpleCookie)MappingProxyTypeTracebackType)TYPE_CHECKINGAnyCallableDictIterableListMapping
NamedTupleOptionalTupleTypeUnion)CIMultiDictCIMultiDictProxy	MultiDictMultiDictProxy)URL   )hdrshelpershttp	multipartpayload)AbstractStreamWriter)ClientConnectionErrorClientOSErrorClientResponseErrorContentTypeError
InvalidURLServerFingerprintMismatch
HAS_BROTLI)FormData)	_SENTINELBaseTimerContext	BasicAuthHeadersMixin	TimerNoopbasicauth_from_netrcnetrc_from_envnoopreifyset_exception
set_result)SERVER_SOFTWAREHttpVersionHttpVersion10HttpVersion11StreamWriter)client_logger)StreamReader)DEFAULT_JSON_DECODERJSONDecoderLooseCookiesLooseHeadersQuery
RawHeaders)
SSLContext)ClientRequestClientResponseRequestInfoFingerprint)ClientSession)
Connection)Tracez[^-!#$%&'*+.^_`|~0-9a-zA-Z]z!^application/(?:[\w.+-]+?\+)?jsonreturnc                      t         rdS dS )Nzgzip, deflate, brzgzip, deflater)        J/var/www/openai/venv/lib/python3.12/site-packages/aiohttp/client_reqrep.py_gen_default_accept_encodingrQ   d   s    ",A/ArO   T)auto_attribsfrozenslotsc                   8    e Zd ZU ee   ed<   ded<   ee   ed<   y)ContentDispositiontypezMappingProxyType[str, str]
parametersfilenameN)__name__
__module____qualname__r   str__annotations__rN   rO   rP   rV   rV   h   s    
3-,,smrO   rV   c                   6    e Zd ZU eed<   eed<   ded<   eed<   y)_RequestInfourlmethodCIMultiDictProxy[str]headersreal_urlN)rZ   r[   r\   r   r^   r]   rN   rO   rP   r`   r`   o   s    	HK$$MrO   r`   c                   ,    e Zd Zefdededddedd f
dZy)	rG   ra   rb   rd   rc   re   rL   c                 T    t         j                  | ||||t        u r|f      S |f      S )zuCreate a new RequestInfo instance.

        For backwards compatibility, the real_url parameter is optional.
        )tuple__new__r,   )clsra   rb   rd   re   s        rP   ri   zRequestInfo.__new__x   s:     }}#vwx9/DS
 	
JRS
 	
rO   N)rZ   r[   r\   r,   r   r]   ri   rN   rO   rP   rG   rG   v   s<     "

 
 )	

 
 

rO   rG   c                   b    e Zd ZeeedZdeddfdZe	defd       Z
dej                  ddfdZy)	rH   )          fingerprintrL   Nc                     t        |      }| j                  j                  |      }|st        d      |t        u s|t
        u rt        d      || _        || _        y )Nzfingerprint has invalid lengthz8md5 and sha1 are insecure and not supported. Use sha256.)lenHASHFUNC_BY_DIGESTLENget
ValueErrorr   r   	_hashfunc_fingerprint)selfro   	digestlenhashfuncs       rP   __init__zFingerprint.__init__   sZ    $	--11)<=>>_D 0WXX!'rO   c                     | j                   S N)rv   rw   s    rP   ro   zFingerprint.fingerprint          rO   	transportc                 "   |j                  d      sy |j                  d      }|j                  d      }| j                  |      j                         }|| j                  k7  r,|j                  d      ^}}}t        | j                  |||      y )N
sslcontext
ssl_objectT)binary_formpeername)get_extra_infogetpeercertru   digestrv   r(   )rw   r   sslobjcertgothostport_s           rP   checkzFingerprint.check   s    ''5)),7!!d!3nnT"))+$###&55jAND$+D,=,=sD$OO $rO   )rZ   r[   r\   r   r   r   rr   bytesrz   propertyro   asyncio	Transportr   rN   rO   rP   rH   rH      s]    (E (d ( !U ! !Pw00 PT PrO   rH   sslrD   
verify_sslssl_contextro   c                    | d} |/|s-t        j                  dt        d       | durt        d      d} |-t        j                  dt        d       | durt        d      |} |6t        j                  dt        d       | durt        d      t	        |      } t        | t              st        d	j                  |             | S )
NTz/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DeprecationWarningrt   rH   
isinstanceSSL_ALLOWED_TYPES	TypeErrorformat)r   r   r   ro   s       rP   _merge_ssl_paramsr      s     {j=	

 d?4 
 C@	

 d?4 
 CQ	

 d?4 
 k*Cc,-  &s
 	
 JrO   )httpswssc                   x    e Zd ZU eed<   ee   ed<   eed<   ee	ee
f   ed<   ee   ed<   ee   ed<   ee   ed<   y)	ConnectionKeyr   r   is_sslr   proxy
proxy_authproxy_headers_hashN)rZ   r[   r\   r]   r^   r   intboolr   rD   rH   r   r.   rN   rO   rP   r   r      sI     I
3-L	z4,	--C=## %rO   r   response_content_typeexpected_content_typec                 B    |dk(  rt         j                  |       d uS || v S )Napplication/json)json_rematch)r   r   s     rP   _is_expected_content_typer      s.      22}}234?? $999rO   c            0           e Zd ZU ej                  ej
                  ej                  ej                  hZej                  ej                  ej                  hZej                  e      j                  ej                  h      Zej                   dej"                   e       iZdZeed<   dZdZdZdZdZed   ed<   ddddddej<                  ddddddddddddddd	d
ede de!dee"   dee#e      dedee$   dee%   dejL                  de'ee(df   dee(   de(dee)jT                     dee+d      dee    dee%   dee,   ded   de'e-e(e.f   dee"   d ee/d!      d"e(d#ee   f.d$Z0dJd%e1d&dfd'Z2e3d&e4d   fd(       Z5e3d&ed)   fd*       Z6e6jn                  dKd,       Z6d&e(fd-Z8e3d&e'd.e(e.f   fd/       Z9e3d&e:fd0       Z;e3d&efd1       Z<e3d&ee=   fd2       Z>e3d&e?fd3       Z@de d&dfd4ZAde'ejL                  ef   d&dfd5ZBdee"   d&dfd6ZCdee#e      d&dfd7ZDdee$   d&dfd8ZEded&dfd9ZFdLd:ZGdMdee%   d"e(d&dfd;ZHded&dfd<ZIdMd=e(d&dfd>ZJdee    dee%   dee"   d&dfd?ZKd+eLd@dAd&dfdBZMdNdCZNdLdDZOdLdEZPd
ede dFeQd&dfdGZRd
ede ddHd&dfdIZSy)OrE   z*/*rO   bodyNzCIMultiDict[None]_skip_auto_headersFT)paramsrd   skip_auto_headersdatacookiesauthversioncompresschunked	expect100loopresponse_classr   r   timersessionr   proxy_headerstraces	trust_envserver_hostnamerb   ra   r   rd   r   r   r   r   r   r   r   r   r   r   rF   r   r   r   r   rI   r   r   r   rK   r   r   c                   |t        j                         }t        j                  |      x}r t	        d|d|j                         d      t        |      t        u sJ |       |t        |      t        u sJ |       t        r|J || _	        |r|j                  |      }|| _        |j                  r|j                  d       n|| _        |j                         | _        || _        |
| _        || _        d | _        |t*        }n|}|| _        ||n	t/               | _        ||nd| _        || _        |j7                         r-t9        j:                  t=        j>                  d            | _         | jC                  |	       | jE                  |       | jG                  |       | jI                  |       | jK                  |       | jM                  |       | jO                  ||       | jQ                  |||       | jS                  |       || j                   | jT                  vr| jW                          | jY                  |       |g | _-        y || _-        y )Nz+Method cannot contain non-token characters z (found at least )Tr   ).r   get_event_loop_CONTAINS_CONTROL_CHAR_REsearchrt   grouprW   r   r   _sessionextend_queryoriginal_urlraw_fragmentwith_fragmentra   upperrb   r   r   r   lengthrF   r   r0   _timer_sslr   	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)rw   rb   ra   r   rd   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   real_response_classs                             rP   rz   zClientRequest.__init__  s4   6 <))+D-44V<<5<=fZ H##(;;="316 
 CyC$$;#%,u,% &&&""6*C.1.>.>3$$T*Clln 	!"0"04G$0eik?C	.>>%.%<%<S]]1=M%ND"G$G$  !23G$$$T*y)%];""4(t{{$2B2BB))+##I.#^rrO   r   rL   c                     d | _         y r|   _ClientRequest__writerrw   r   s     rP   __reset_writerzClientRequest.__reset_writerl  	    rO   c                 2    | j                   xs
 t               S r|   )r   r   r}   s    rP   r   zClientRequest.skip_auto_headerso  s    &&7+-7rO   asyncio.Task[None]c                     | j                   S r|   r   r}   s    rP   _writerzClientRequest._writers      }}rO   writerc                     | j                   %| j                   j                  | j                         || _         |j                  | j                         y r|   )r   remove_done_callback_ClientRequest__reset_writeradd_done_callbackrw   r   s     rP   r   zClientRequest._writerw  s?    ==$MM..t/B/BC  !4!45rO   c                 :    | j                   j                  t        v S r|   )ra   scheme_SSL_SCHEMESr}   s    rP   r   zClientRequest.is_ssl~  s    xx,..rO   rD   c                     | j                   S r|   )r   r}   s    rP   r   zClientRequest.ssl      yyrO   c           
      N   | j                   x}r#t        t        |j                                     }nd }| j                  }t        j                  t        |j                  xs d|j                  |j                  t        v | j                  | j                  | j                  |f      S )N )r   hashrh   itemsra   ri   r   raw_hostr   r   r   r   r   r   )rw   r   hra   s       rP   connection_keyzClientRequest.connection_key  s     ...=.#E-*=*=*?$@AAAhh}}"

l*		


 	
rO   c                 :    | j                   j                  }|J |S r|   )ra   r  )rw   rets     rP   r   zClientRequest.host  s     hh
rO   c                 .    | j                   j                  S r|   )ra   r   r}   s    rP   r   zClientRequest.port  s    xx}}rO   c                     t        | j                        }t        j                  t        | j
                  | j                  || j                  f      S r|   )r   rd   rh   ri   rG   ra   rb   r   )rw   rd   s     rP   request_infozClientRequest.request_info  s?    )9$,,)G
 }}$((DKK$:K:KL
 	
rO   c                     |j                   st        |      |j                  s|j                  r8t	        j
                  |j                  xs d|j                  xs d      | _        yy)z8Update destination host, port and connection type (ssl).r  N)	r  r'   raw_userraw_passwordr   r.   userpasswordr   )rw   ra   s     rP   r   zClientRequest.update_host  sP     ||S/! <<3++))#((.b#,,:L"MDI ,rO   c                 <   t        |t              rd|j                  dd      D cg c]  }|j                          }}	 t	        j
                  t        |d         t        |d               }|| _        y|| _        yc c}w # t        $ r t        d|       dw xY w)zdConvert request version to two elements tuple.

        parser HTTP version '1.1' => (1, 1)
        .r   r   z#Can not parse http version number: N)	r   r]   splitstripr   r8   r   rt   r   )rw   r   partvs       rP   r   zClientRequest.update_version  s    
 gs#*1--Q*?@*?$*?A@**3qt9c!A$i@
 w A   9'Cs   A=.B Bc                 |   t               | _        | j                  j                  }|J || j                  t        j
                  <   |syt        |t        t        t        f      r|j                         }|D ]C  \  }}|t        j                  v r|| j                  |<   (| j                  j                  ||       E y)zUpdate request headers.N)r   rd   ra   host_port_subcomponentr   HOSTr   dictr   r   r  HOST_ALLadd)rw   rd   r   keyvalues        rP   r   zClientRequest.update_headers  s    )4 xx.. "&TYYgni@AmmoG!JCdmm#$)S!  e, "rO   c                    |Vt        d t        |      D              | _        | j                  j	                         }|j                  | j                         n| j                  }| j                  j                         D ]  \  }}||vs|| j                  |<    t        j                  |vr"t        | j                  t        j                  <   y y )Nc              3   $   K   | ]  }|d f 
 y wr|   rN   ).0hdrs     rP   	<genexpr>z4ClientRequest.update_auto_headers.<locals>.<genexpr>  s      2'@d'@s   )r   sortedr   rd   copyextendDEFAULT_HEADERSr  r   
USER_AGENTr7   )rw   r   used_headersr"  vals        rP   r   z!ClientRequest.update_auto_headers  s    (&1 2'-.?'@2 'D#  <<,,.L 7 78  <<L,,224HC,&$'S! 5 ??,.,;DLL) /rO   c                    |syt               }t        j                  | j                  v rT|j	                  | j                  j                  t        j                  d             | j                  t        j                  = t        |t              r|j                         }n|}|D ]u  \  }}t        |t              r[|j                  |j                  t                     }|j                  |j                  |j                  |j                         |||<   q|||<   w |j                  dd      j                         | j                  t        j                  <   y)zUpdate request cookies header.Nr  ;)headersep)r   r   COOKIErd   loadrs   r   r   r  r   r  setr  coded_valueoutputr  )rw   r   citer_cookiesnamer  mrsl_vals          rP   r   zClientRequest.update_cookies  s    N;;$,,&FF4<<##DKK45T[[)gw'"==?L"L'KD%%( 99UYY9UYYU5F5FG"$$ ( %&HHBCH$@$F$F$HT[[!rO   c                 R   |sd| _         y| j                  j                  t        j                        r| j                   rt        d      y| j                   rPt        | j                   t              sd| _         | j                   | j                  t        j                  <   d| _        yy)zSet request content encoding.Nz9compress can not be set if Content-Encoding header is setdeflateT)	r   rd   rs   r   CONTENT_ENCODINGrt   r   r]   r   )rw   r   s     rP   r   z%ClientRequest.update_content_encoding  s     DM<<D112}} O   ]]dmmS1 )26--DLL../DL	 rO   c                    | j                   j                  t        j                  d      j	                         }d|v r| j
                  rt        d      y| j
                  rEt        j                  | j                   v rt        d      d| j                   t        j                  <   yt        j                  | j                   vr:t        t        | j                              | j                   t        j                  <   yy)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)rd   rs   r   TRANSFER_ENCODINGlowerr   rt   CONTENT_LENGTHr]   rq   r   )rw   tes     rP   r   z&ClientRequest.update_transfer_encoding  s    \\d44b9??A?|| D   \\""dll2 L  4=DLL//0""$,,647DII4GT001 7rO   c                    || j                   }|d|rb| j                  j                  Lt               }t	        j
                  t              5  t        || j                  j                        }ddd       |yt        |t        j                        st        d      |j                         | j                  t        j                  <   y# 1 sw Y   ]xY w)zSet basic auth.Nz%BasicAuth() tuple is required instead)r   ra   r   r2   
contextlibsuppressLookupErrorr1   r   r   r.   r   encoderd   r   AUTHORIZATION)rw   r   r   	netrc_objs       rP   r   zClientRequest.update_auth4  s    <99D<I$((--*C&(I$$[1+Itxx}}E 2<$ 1 12CDD+/;;=T''( 21s   !C		Cc                 T   |y t        |t              r |       }	 t        j                  j	                  |d       }|| _        | j                  sXt        j                  | j                  vr<|j                  x}'t        |      | j                  t        j                  <   nd| _        |j                  sJ | j                  }| j                  }|j                  j                         D ]  \  }}||v s|||v r|||<    y # t        j
                  $ r  t        |             }Y w xY w)N)dispositionT)r   r+   r!   PAYLOAD_REGISTRYrs   rC  r   r   r   r>  rd   sizer]   r   r  )rw   r   rJ  rd   skip_headersr  r  s          rP   r   z#ClientRequest.update_body_from_dataD  s   < dH%6D	$++//$/GD 	 || 3 34<< G		!.47IT001# |||,,..,,,,.JCg~,":sl?R GCL /! "" 	$!8D>#D	$s   !D #D'&D'expectc                     |rd| j                   t        j                  <   nLt        j                  | j                   v r0| j                   t        j                     j                         dk(  rd}|r | j                  j                         | _        y y )Nz100-continueT)rd   r   EXPECTr=  r   create_future	_continue)rw   rL  s     rP   r   z$ClientRequest.update_expect_continuec  sf    (6DLL%KK4<<'T[[)//1^CF!YY446DN rO   c                     || _         |d | _        d | _        y |r%t        |t        j
                        st        d      || _        |!t        |t        t        f      st        |      }|| _        y )Nz,proxy_auth must be None or BasicAuth() tuple)
r   r   r   r   r   r.   rt   r   r   r   )rw   r   r   r   s       rP   r   zClientRequest.update_proxyo  sr     
="DO!%DjW5F5FGKLL$$ZI~6.
 (6M*rO   connrJ   c                   K   | j                   ,|j                          d{    | j                    d{    |j                  }|J 	 t        | j                  t
        j                        r$| j                  j                  |       d{    n\t        | j                  t        t        f      r| j                  f| _        | j                  D ]  }|j                  |       d{     |j                          d{    |j                          y7 7 7 7 57 # t        $ ri}|}|j                  duxs t        |t        j                         }|r#t!        |j                  d| j"                        }t%        |||       Y d}~yd}~wt        j&                  $ r |j)                           t*        $ r#}t%        |t-        d|      |       Y d}~yd}~ww xY ww)z-Support coroutines that yields bytes objects.NzCan not write request body for z4Failed to send bytes into the underlying connection )rP  drainprotocolr   r   r!   Payloadwriter   	bytearray	write_eofstart_timeoutOSErrorerrnor   TimeoutErrorr$   ra   r5   CancelledErrorclose	Exceptionr#   )rw   r   rR  rU  chunkunderlying_excreraised_excexc_is_not_timeouts           rP   write_byteszClientRequest.write_bytes  s    
 >>%,,.  ..  ==###$	%$))W__5iioof---dii%);<!%DI!YYE ,,u--- '8 ""$$$""$S !  . .6 %5  	B)L!/!5!5T!A " 4 4J F ","((5dhh]C 
 (L.AA%% 	JJL 	%J4)T  	s    G%DG%DG%AD# DAD# )D*D# 0G%D!G%G%D# D# !G%#	G",AFG%/G"?GG%G""G%c                 T  K   | j                   t        j                  k(  r6| j                  j                  }|J | d| j                  j
                   }nH| j                  r&| j                         st        | j                        }n| j                  j                  }|j                  }|J t        || j                  | j                  r5t        j                  | j                   | j                   | j                        nd | j                  r5t        j                  | j"                  | j                   | j                        nd       }| j$                  r|j'                  | j$                         | j(                  |j+                          | j                   | j,                  v ra| j.                  t        j0                  | j.                  vr9t        j0                  | j2                  vrd| j2                  t        j0                  <   | j4                  }t        j6                  | j2                  vrc|j8                  j:                  r'|t<        k(  rDd| j2                  t        j6                  <   n&|t>        k(  rd| j2                  t        j6                  <   | j                    d| d|j@                   d|jB                   }|jE                  || j2                         d {    | jF                  s| jH                  |jJ                  r~| jM                  ||      }tN        jP                  d	k\  r#tS        jT                  || j                  d
      }	n| j                  jW                  |      }	|	jY                         rd }	n*|	| _-        n"|j]                          |j_                          d }	| j`                  }
|
J  |
| j                   | jb                  |	| jH                  | jd                  | jf                  | j                  | j                  | jh                  	      | _5        | jj                  S 7 Kw)N:)on_chunk_senton_headers_sentzapplication/octet-streamr_  z
keep-alive z HTTP/r  )r      T)r   eager_start)r   continue100r   r  r   r   r   )6rb   r   METH_CONNECTra   host_subcomponentr   r   r   r]   raw_path_qsrU  r;   r   r   	functoolspartial_on_chunk_request_sent_on_headers_request_sentr   enable_compressionr   enable_chunkingPOST_METHODSr   CONTENT_TYPErd   r   
CONNECTION
_connectorforce_closer:   r9   majorminorwrite_headersr   rP  writing_pausedre  r   version_infor   Taskcreate_taskdoner   rZ  set_eofr   r   r   r  r   response)rw   rR  connect_hostpathrU  r   r  status_linecorotaskr   s              rP   sendzClientRequest.send  s0    
 ;;$+++8855L+++"^1TXX]]O4DZZtxx=D88''D==###II << !!$"="=t{{DHHU << !!$"?"?dhhW
 ==%%dmm4<<#""$ KK4,,,''/$$D,C,CC!!5.HDLL**+LL??$,,.**%4;DLL1m#0<T__- QtfF177)1QWWIF"";===992h6M6M##FD1D7* ||DtyydKyy,,T2yy{# ""$NND,,)))&KK++**<<MM

 }}I 	>s   KP(P%EP(c                   K   | j                   	 | j                    d {    y y 7 # t        j                  $ rA t        j                  dk\  r+t        j
                         x}r|j                         r Y y Y y Y y w xY wwN)r      )r   r   r^  r   r  current_task
cancellingrw   r  s     rP   r_  zClientRequest.close  s|     ==$mm## %#)) $$/!(!5!5!777) * 8 0s2   A?( &( A?( AA<5A?;A<<A?c                     | j                   a| j                  j                         s| j                   j                          | j                   j	                  | j
                         d | _         y y r|   )r   r   	is_closedcancelr   r   r}   s    rP   	terminatezClientRequest.terminate"  sP    ==$99&&($$&MM..t/B/BC DM	 %rO   ra  c                 h   K   | j                   D ]  }|j                  |||       d {     y 7 wr|   )r   send_request_chunk_sent)rw   rb   ra   ra  traces        rP   rs  z$ClientRequest._on_chunk_request_sent)  s/     \\E//UCCC "C   &202zCIMultiDict[str]c                 h   K   | j                   D ]  }|j                  |||       d {     y 7 wr|   )r   send_request_headers)rw   rb   ra   rd   r  s        rP   rt  z&ClientRequest._on_headers_request_sent-  s1      \\E,,VS'BBB "Br  r|   )r   r   rL   NrL   N)F)rR  rJ   rL   rF   )TrZ   r[   r\   r   METH_GET	METH_HEADMETH_OPTIONS
METH_TRACEr   
METH_PATCH	METH_POSTMETH_PUTrw  unionMETH_DELETEALL_METHODSACCEPTACCEPT_ENCODINGrQ   r'  r   r   r^   r   r  r   rP  r   r   r   r:   r]   r   rB   rA   r   r@   r.   r8   r   r   r   AbstractEventLoopr   r-   rD   rH   r   rz   objectr   r   r   r   r   setterr   r   r   r  r   r   r   rG   r  r   r   r   r   r   r   r   r   r   r   r   r"   re  r  r_  r  r   rs  rt  rN   rO   rP   rE   rE      s$   	K OOT^^T]]CL##L1779I9I8JKK 	U:<O D#ODHHI8<!45< *.59*.$($($6$6+/"&48;?#*.,0-14804*.)-3M8M8 M8
 M8 ,'M8 $HSM2M8 M8 ,'M8 y!M8 !!M8 T4(M8 $M8 M8 w001M8  !&6!78!M8" }#M8$ Y'%M8& ()'M8( /*)M8* :t[01+M8,  --M8. g'/M80 1M82 "#3M8^ $  8;t#4 8 8 "67   ^^6 6/ / U<{:;   
 
 
& c  
 hsm   
k 
 
Ns Nt NeD,<,<c,A&B t -h|&< - -2<Xhsm5L <QU <&Ih|&< I I2 C  D  $H,9 3 9 9QU 9 !# !$ !>
7T 
7d 
7+}+ Y'+  -	+
 
+,/%*/%2>/%	/%b^@
!D3 DS D DSW DCC #C.@C	CrO   rE   Connection closedc                   ~   e Zd ZU dZee   ed<   dZeed<   dZ	ee
   ed<   dZeed<   dZee   ed<   dZee
   ed<   dZed	   ed
<   dZeed<   dZed   ed<   dZee   ed<   dZed   ed<   dZeej6                     ed<   dZed   ed<   dZdZdZd Z e!d ege
f   ed<   dZ"ed   ed<   de
de#ddded   de$d e%d!e&d"   d#e'jP                  d$dd%dfd&Z)dWd'e*d%dfd(Z+e,d%ed   fd)       Z-e-j\                  ded   d%dfd*       Z-e,d%efd+       Z/e/j\                  d,ed%dfd-       Z/e0d%e#fd.       Z1e0d%e#fd/       Z2e0d%e#fd0       Z3e0d%e
fd1       Z4e0dXd2       Z5e0d%efd3       Z6e0d%e%fd4       Z7e0d%ee8   fd5       Z9e:fd6e;d%dfd7Z<d%e
fd8Z=e,d%ed   fd9       Z>e0d%ed	   fd:       Z?e0dYd;       Z@dZd<ZAd[d=ZBe,d%eCfd>       ZDd[d?ZEd%e;fd@ZFe,d%eCfdA       ZGd[dBZHd[dCZId[dDZJd[dEZKd[dFZLd[dGZMd%efdHZNd%e
fdIZOd\dJee
   dKe
d%e
fdLZPdeQdMdNdJee
   dOeRdPee
   d%e;fdQZSd]dRZTdSeeUeV      dTeeV   dUeeW   d%dfdVZXy)^rF   Nr   statusreasoncontent_body_headersrN   )rF   ._history_raw_headersrJ   _connection_cookieszasyncio.Future[bool]rP  r   rI   r   TFc                       y)Nutf-8rN   )r   s    rP   <lambda>zClientResponse.<lambda>R  s    GrO   _resolve_charsetr   _ClientResponse__writerrb   ra   r   zOptional[asyncio.Task[None]]rm  r   r  r   rK   r   r   rL   c                   t        |      t        u sJ || _        || _        |j                  r|j                  d       n|| _        ||| _        ||| _        || _	        ||n	t               | _        i | _        || _        || _        |	|	| _        |	j                   | _        |j#                         r.t%        j&                  t)        j*                  d            | _        y y )Nr   )rW   r   rb   	_real_urlr   r   _urlr   rP  _request_infor0   r   _cacher   _loopr   r  r   r   r   r   r   r   )
rw   rb   ra   r   rm  r   r  r   r   r   s
             rP   rz   zClientResponse.__init__V  s     CyC/2/?/?C%%d+S	!DL"(DN)$0eik&(
 #DM$+$<$<D!>>%.%<%<S]]1=M%ND" rO   r   c                     d | _         y r|   r  r   s     rP   r   zClientResponse.__reset_writer}  r   rO   c                     | j                   S )zThe writer task for streaming data.

        _writer is only provided for backwards compatibility
        for subclasses that may need to access it.
        r  r}   s    rP   r   zClientResponse._writer  s     }}rO   c                     | j                   %| j                   j                  | j                         || _         |y|j                         rd| _         y|j	                  | j                         y)z'Set the writer task for streaming data.N)r  r   _ClientResponse__reset_writerr  r   r   s     rP   r   zClientResponse._writer  sY     ==$MM..t/B/BC>;;= DM$$T%8%89rO   c                 P    | j                   t               | _         | j                   S r|   )r  r   r}   s    rP   r   zClientResponse.cookies  s    == (NDM}}rO   r   c                     || _         y r|   )r  )rw   r   s     rP   r   zClientResponse.cookies  s	    rO   c                     | j                   S r|   )r  r}   s    rP   ra   zClientResponse.url  r   rO   c                 R    t        j                  dt        d       | j                  S )NzDeprecated, use .url #1654   r   )r   r   r   r  r}   s    rP   url_objzClientResponse.url_obj  s    24FSTUyyrO   c                     | j                   S r|   )r  r}   s    rP   re   zClientResponse.real_url  s    ~~rO   c                 ^    | j                   j                  J | j                   j                  S r|   )r  r   r}   s    rP   r   zClientResponse.host  s$    yy~~)))yy~~rO   c                     | j                   S r|   )r  r}   s    rP   rd   zClientResponse.headers  r   rO   c                     | j                   S r|   )r  r}   s    rP   raw_headerszClientResponse.raw_headers  r~   rO   c                     | j                   S r|   )r  r}   s    rP   r  zClientResponse.request_info  s    !!!rO   c                     | j                   j                  t        j                        }|y t	        j
                  |      \  }}t        |      }t	        j                  |      }t        |||      S r|   )	r  rs   r   CONTENT_DISPOSITIONr    parse_content_dispositionr	   content_disposition_filenamerV   )rw   rawdisposition_type
params_dctr   rY   s         rP   content_dispositionz"ClientResponse.content_disposition  sd    mm 8 89;'0'J'J3'O$*!*-99&A!"2FHEErO   	_warningsc                 v   | j                   ry | j                  | j                  j                          | j                          | j                  j                         r[d| i} |j                  d| t        fi | | dd}| j                  r| j                  |d<   | j                  j                  |       y y y )NsourcezUnclosed response zUnclosed response)client_responsemessagesource_traceback)
_closedr  release_cleanup_writerr  r   r   ResourceWarningr   call_exception_handler)rw   r  kwargscontexts       rP   __del__zClientResponse.__del__  s    <<'$$&  "zz##%"D)	!3D8<oXQWX.2?RS))262H2HG./

11': &	 (rO   c                 f   t        j                         }t        | j                        }| j                  r,| j                  j                  dd      j                  d      }nd}t        dj                  || j                  |      |       t        | j                  |       |j                         S )NasciibackslashreplaceNonez<ClientResponse({}) [{} {}]>)file)ioStringIOr]   ra   r  rD  decodeprintr   r  rd   getvalue)rw   outascii_encodable_urlascii_encodable_reasons       rP   __repr__zClientResponse.__repr__  s    kkm!$((m;;%)[[%7%7+&fWo # &,"*11#T[[2H 		
 	dll%||~rO   c                     | j                   S r|   )r  r}   s    rP   
connectionzClientResponse.connection  s    rO   c                     | j                   S )z2A sequence of of responses, if redirects occurred.)r  r}   s    rP   historyzClientResponse.history  s     }}rO   c           	         dj                  | j                  j                  dg             }|st        t	                     S t	               }t        j                  d|      D ]  }t        j                  d|      }||j                         \  }}|j                  d      dd  }t	               }|D ]Q  }	t        j                  d|	t
        j                        }|+|j                         \  }
}}}|j                  |
|       S |j                  d|      }
|j                  d	| j                  j                  t        |                   |j                  t        |
      t        |              t        |      S )
Nz, linkz	,(?=\s*<)z\s*<(.*)>(.*)r,  r   z%^\s*(\S*)\s*=\s*(['\"]?)(.*?)(\2)\s*$relra   )joinrd   getallr   r   rer  r   groupsMr  rs   ra   r   r]   )rw   	links_strlinksr*  r   ra   
params_strr   r  paramr  r   r  s                rP   r  zClientResponse.links  s6   IIdll11&"=>	!)+..<EK88L)4CHH-s3E}#llnOC%%c*12.F/8{D!I5RTRVRVW=#(<<> Qqe$   ((5#&CHHUDHHMM#c(34IIc#ht 45/ 52 e$$rO   c           	      J  K   d| _         |j                  | _        || _        | j                  5  	 	 | j                  }|j                          d{   \  }}|j                  dk  s|j                  dkD  s|j                  dk(  rn*| j                  t        | j                  d       d| _        	 ddd        j                   | j"                         j$                  | _        |j                  | _        |j(                  | _        |j                  | _        |j,                  | _        || _        | j                  j3                  t4        j6                  d      x}r*t9               }|D ]  }	 |j;                  |        || _!        | S 7 9# t        j                  $ rH}t        | j                  | j                  |j                  |j                  |j                        |d}~ww xY w# 1 sw Y   ;xY w# t<        $ r }t?        j@                  d	|       Y d}~d}~ww xY ww)
zStart response processing.FTNr  r  rd   d      e   rN   z!Can not load response cookies: %s)"r  rU  	_protocolr  r   readr   HttpProcessingErrorr%   r  r  coder  rd   rP  r6   on_eof_response_eofr   r  r  r  r  r  r  r  r   
SET_COOKIEr   r0  r   r<   warningr  )	rw   r  rU  r  r!   exccookie_hdrsr   r"  s	            rP   startzClientResponse.start  s    #,,%[[
#~~H-5]]_'<$GW <<#%);w||s?R>>-t~~t4%)DN'  ! . 	t))* llnn  #//  ,,--doorBB;B"nG"TLL% #
 $DMS (=// -))"xx # #  [V # T!))*MsSSTs~   ,H#G*FF	FAG*1B;H#-G7>H#	FG'AG""G''G**G4/H#7	H  HH#H  H#c                     | j                   ry | j                  xr | j                  j                  }||j                  ry d| _         | j	                          | j                          y NT)r  r  rU  upgradedr  _release_connection)rw   rU  s     rP   r  zClientResponse._response_eofN  sZ    << ##A(8(8(A(AH$5$5  "rO   c                     | j                   S r|   )r  r}   s    rP   closedzClientResponse.closed[  s    ||rO   c                    | j                   s| j                          d| _        | j                  | j                  j	                         ry | j                          | j                  "| j                  j                          d | _        y y r  )	_released_notify_contentr  r  r  r  r  r_  r}   s    rP   r_  zClientResponse.close_  so    ~~  "::!5!5!7'""$#D (rO   c                     | j                   s| j                          d| _        | j                          | j	                          t               S r  )r  r  r  r  r  r3   r}   s    rP   r  zClientResponse.releasel  s;    ~~  "  "vrO   c                      d| j                   kD  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  r}   s    rP   okzClientResponse.okv  s     T[[  rO   c                     | j                   sl| j                  J | j                  s| j                          t	        | j
                  | j                  | j                  | j                  | j                        y )Nr  )	r"  r  _in_contextr  r%   r  r  r  rd   r}   s    rP   raise_for_statuszClientResponse.raise_for_status  sd    ww;;*** ##%!!{{  rO   c                       j                   M j                  " j                   j                          d  _         y  j                  j                   fd       y y )Nc                 $    j                         S r|   )r  )frw   s    rP   r  z4ClientResponse._release_connection.<locals>.<lambda>  s    $:R:R:TrO   )r  r  r  r   r}   s   `rP   r  z"ClientResponse._release_connection  sK    '}}$  ((*#' //0TU (rO   c                   K   | j                   	 | j                    d {    | j                          y 7 # t        j                  $ r= t        j                  dk\  r't        j
                         x}r|j                         r Y bw xY wwr  )r  r   r^  r   r  r  r  r  r  s     rP   _wait_releasedzClientResponse._wait_released  sy     ==$mm## 	  " $)) $$/!(!5!5!777)2   B
7 57 B
7 ABB
BB
c                 ^    | j                   | j                   j                          d | _        y r|   )r  r  r   r}   s    rP   r  zClientResponse._cleanup_writer  s#    ==$MM  "rO   c                 n    | j                   }|r |j                         t        |t               d| _        y r  )r  	exceptionr5   _CONNECTION_CLOSED_EXCEPTIONr  )rw   r  s     rP   r  zClientResponse._notify_content  s.    ,,w((*2'#?@rO   c                   K   | j                   	 | j                    d {    | j                          y 7 # t        j                  $ r= t        j                  dk\  r't        j
                         x}r|j                         r Y bw xY wwr  )r  r   r^  r   r  r  r  r  r  s     rP   wait_for_closezClientResponse.wait_for_close  sv     ==$mm## 	 $)) $$/!(!5!5!777)r+  c                 *  K   | j                   s	 | j                  j                          d{   | _         | j                  D ];  }|j	                  | j
                  | j                  | j                          d{    = n| j                  rt        d      | j                  xr | j                  j                  }||j                  s| j                          d{    | j                   S 7 7 v# t        $ r | j                           w xY w7 2w)zRead response payload.Nr  )r  r  r  r   send_response_chunk_receivedrb   ra   BaseExceptionr_  r  r#   r  rU  r  r*  )rw   r  rU  s      rP   r  zClientResponse.read  s     ::#'<<#4#4#66
!\\E<<TXXtzz   * ^^'(;<<##A(8(8(A(A8#4#4%%'''zz 7 ! 

 (sL   DC3 C/AC3 :C1;C3 ADDD/C3 1C3 3DDc                 >   | j                   j                  t        j                  d      j	                         }t        j                  |      }|j                  j                  d      }|rGt        j                  t        t              5  t        j                  |      j                  cd d d        S |j                  dk(  r|j                   dk(  s|j                   dk(  ry| j"                  t%        d      | j'                  | | j"                        S # 1 sw Y   jxY w)Nr  charsetapplicationjsonrdapr  z7Cannot compute fallback encoding of a not yet read body)rd   rs   r   rx  r=  r   parse_mimetyperX   rA  rB  rC  rt   codecslookupr6  rW   subtyper  RuntimeErrorr  )rw   ctypemimetypeencodings       rP   get_encodingzClientResponse.get_encoding  s      !2!2B7==?))%0&&**95$$[*=}}X.33 >= ==M)&(*:*:f*D ::I  $$T4::66 >=s   	DDrA  errorsc                    K   | j                   | j                          d{    || j                         }| j                   j                  ||      S 7 3w)z!Read response payload and decode.N)rC  )r  r  rB  r  )rw   rA  rC  s      rP   textzClientResponse.text  sR     ::))+((*Hzz  & 99 s    AA4Ar   )rA  loadscontent_typerF  rG  c                  K   | j                   | j                          d{    |r| j                  j                  t        j
                  d      j                         }t        ||      s;t        | j                  | j                  | j                  d|z  | j                        | j                   j                         }|sy|| j                         } ||j                  |            S 7 ˭w)zRead and decodes JSON response.Nr  z3Attempt to decode JSON with unexpected mimetype: %sr  )r  r  rd   rs   r   rx  r=  r   r&   r  r  r  r  rB  r  )rw   rA  rF  rG  r?  strippeds         rP   r8  zClientResponse.json  s      ::))+LL$$T%6%6;AACE,ULA&%%LL;;MPUU LL  ::##%((*HX__X.//- s    C0C.CC0c                    K   d| _         | S wr  )r$  r}   s    rP   
__aenter__zClientResponse.__aenter__  s     s   
exc_typeexc_valexc_tbc                 n   K   d| _         | j                          | j                          d {    y 7 w)NF)r$  r  r1  )rw   rL  rM  rN  s       rP   	__aexit__zClientResponse.__aexit__  s-      ! 	!!###s   +535r|   )rL   rc   )rL   z/MultiDictProxy[MultiDictProxy[Union[str, URL]]])r  rJ   rL   rF   r  )Nstrict)rL   rF   )YrZ   r[   r\   r   r   r8   r^   r  r   r  r]   r  r=   r  r   r  r   r  r   r  rC   r  r  r   rP  r   r   StackSummaryr   r  r  r$  r  r   r  r   r-   rG   r   r   r  rz   r  r  r   r   r  r   r4   ra   r  re   r   rd   r  r  rV   r  r   r   r  r  r  r  r  r  r  r   r  r_  r  r"  r%  r  r*  r  r  r1  r  rB  rE  r>   r?   r8  rK  r   r4  r
   rP  rN   rO   rP   rF   rF   7  s    &*GXk")FC FHSM  G\ !E8E?!&*Hs#*-/He)*/#L*#*.K,'.'+Hh|$+26Ix./6:>x	 6 67>*.Hh'. GIKASh 0%8#=>S/3Hh+,3%O%O %O
 /%O 45%O  %O "%O W%O ''%O !%O 
%ON $  "67   ^^:h';< : : :   
 ^^ |       S      #   c     !Z ! ! "k " " FX.@%A F F (0 ; ;D ; # $  H\2     45   !% !%F4l#   $  !D ! !$V#
E (7c 7.:8C= : :TW : #'1&80 3-0 	0
 sm0 
0B$4./$ -($ '	$
 
$rO   rF   )xr   r;  rA  rq  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   attr	multidictr   r   r   r   yarlr   r  r   r   r   r    r!   abcr"   client_exceptionsr#   r$   r%   r&   r'   r(   compression_utilsr*   formdatar+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   logr<   streamsr=   typedefsr>   r?   r@   rA   rB   rC   r   rD   ImportErrorr  __all__clientrI   	connectorrJ   tracingrK   compiler   r   r]   rQ   srV   r`   rG   rH   r   rW   r   r   r   	frozensetr   r   r   rE   r/  rF   rN   rO   rP   <module>ri     sK       	 	 
   % % : : 1     N N  5 5 %  *       !  " L %% 'BJJ'EF 
"**9
:Bc B T$d3  4: 
, 
$P P@ ?{DJGtDz*4	|T;.	/44 ,'4 %	4
 <{*+4n )*	&J 	&::7::	:rC rCj  55HI l$\ l$K  
s   5
H 	HH