
    3Cf                     (   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@mAZAmBZBmCZCmDZDmEZE ddl,mFZFmGZGmHZHmIZImJZJ ddlKmLZL ddlMmNZN ddlOmPZPmQZQmRZRmSZSmTZT 	 d dlUZUd dlUmVZV dZYerddlZm[Z[ ddl\m]Z] ddl^m_Z_  ej                  d      Za ej                  d      ZbdecfdZd e!j                  ddd       G d d             Zf e!j                  ddd       G d  d!             Zg G d" d#      ZheUeUj                  eieh ejd      fZkn
ei ejd      fZkd$ed%eiehf   d&eei   d'ed%   d(eel   ded%eiehf   f
d)Zm e!j                  ddd*       G d+ d,             Znd-ecd.ecdeifd/Zo G d0 d1      Zp G d2 d3e>      Zqy# eW$ r dZUeXZVY "w xY w)4    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
HAS_BROTLI)FormData)
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
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)        U/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/aiohttp/client_reqrep.py_gen_default_accept_encodingrO   ^   s    ",A/ArM   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__rL   rM   rN   rT   rT   b   s    
3-,,smrM   rT   c                       e Zd ZU eed<   eed<   ded<    ej                         Zeed<   ej                  defd       Z
y)	rE   urlmethodCIMultiDictProxy[str]headersreal_urlrJ   c                     | j                   S N)r^   selfs    rN   real_url_defaultzRequestInfo.real_url_defaultp   s    xxrM   N)rX   rY   rZ   r   r\   r[   attribrb   defaultrg   rL   rM   rN   rE   rE   i   sC    	HK$$DGGIHc#  rM   rE   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)	rF   )          fingerprintrJ   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)rf   ro   	digestlenhashfuncs       rN   __init__zFingerprint.__init__|   s`    $	--11)<=>>_D 0M  "'rM   c                     | j                   S rd   )rv   re   s    rN   ro   zFingerprint.fingerprint          rM   	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(   )rf   r|   sslobjcertgothostport_s           rN   checkzFingerprint.check   s    ''5)),7!!d!3nnT"))+$###&55jAND$+D,=,=sD$OO $rM   )rX   rY   rZ   r   r   r   rr   bytesry   propertyro   asyncio	Transportr   rL   rM   rN   rF   rF   u   s]    
(E 
(d 
( !U ! !Pw00 PT PrM   rF   sslrB   
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   rF   
isinstanceSSL_ALLOWED_TYPES	TypeErrorformat)r   r   r   ro   s       rN   _merge_ssl_paramsr      s     {j=	

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

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

 d?4 
 k*Cc,-  &s
 	
 JrM   )rP   rR   rQ   c                   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)rX   rY   rZ   r[   r\   r   intboolr   rB   rF   r   r-   rL   rM   rN   r   r      sI     I
3-L	z4,	--C=## %rM   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     rN   _is_expected_content_typer      s.      22}}234?? $999rM   c            0          e Zd Z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dZdZdZdZdd e       dddej6                  dd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jJ                  dee   dee&   de&dee'jP                     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!Z/dHd"e0d#dfd$Z1e2d#ed%   fd&       Z3e3jh                  d'ed%   d#dfd(       Z3d#e&fd)Z5e2d#e+d*e&e-f   fd+       Z6e2d#e7fd,       Z8e2d#efd-       Z9e2d#ee:   fd.       Z;e2d#e<fd/       Z=ded#dfd0Z>de+ejJ                  ef   d#dfd1Z?d
ee    d#dfd2Z@de!e   d#dfd3ZAdee#   d#dfd4ZBde"d#dfd5ZCdId6ZDdJdee$   de&d#dfd7ZEd8e"d#dfd9ZFdJd:e&d#dfd;ZGdee   dee$   dee    d#dfd<ZHd#e&fd=ZId'eJd>d?d#dfd@ZKdKdAZLdIdBZMdIdCZNdededDeOd#dfdEZPdeded
dFd#dfdGZQy)LrC   z*/*rM   NFT)paramsra   skip_auto_headersdatacookiesauthversioncompresschunked	expect100loopresponse_classr   r   timersessionr   proxy_headerstraces	trust_envserver_hostnamer_   r^   r   ra   r   r   r   r   r   r   r   r   r   r   rD   r   r   r   r   rG   r   r   r   rI   r   r   c                    |t        j                         }t        j                  |      }|rt	        d|d      t        |t              sJ |       t        |t        t        d       f      sJ |       t        d|      | _	        |rRt        |j                        }|j                  |      }|j                  |j                         |j                  |      }|| _        |j                  d       | _        |j#                         | _        || _        |
| _        || _        d | _        |t.        }n|}|| _        ||n	t3               | _        ||nd| _        || _        |j;                         r-t=        j>                  tA        jB                  d            | _"        | jG                  |	       | jI                  |       | jK                  |       | jM                  |       | jO                  |       | jQ                  |       | jS                  ||       | jU                  |||       | jW                  |       || j$                  | jX                  vr| j[                          | j]                  |       |g }|| _/        y )Nz+Method cannot contain non-token characters z# (found at least {match.group()!r})rG   Tr   )0r   get_event_loop_CONTAINS_CONTROL_CHAR_REsearchrt   r   r   rU   r   _sessionr   query
with_queryextendoriginal_urlwith_fragmentr^   upperr_   r   r   r   lengthrD   r   r/   _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)rf   r_   r^   r   ra   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   qurl2real_response_classs                               rN   ry   zClientRequest.__init__  s:   6 <))+D)008=fZ H5 5 
 #s#(S(#%#tDz!23:U:3 _g6#))$A>>&)DHHTZZ ..#C$$T*lln 	!"0"04G$0eik?C	.>>%.%<%<S]]1=M%ND"G$G$  !23G$$$T*y)%];""4(t{{$2B2BB))+##I.>FrM   r   rJ   c                     d | _         y rd   _ClientRequest__writerrf   r   s     rN   __reset_writerzClientRequest.__reset_writerW  	    rM   asyncio.Task[None]c                     | j                   S rd   r   re   s    rN   _writerzClientRequest._writerZ      }}rM   writerc                     | j                   %| j                   j                  | j                         || _         ||j                  | j                         y y rd   )r   remove_done_callback_ClientRequest__reset_writeradd_done_callbackrf   r   s     rN   r   zClientRequest._writer^  J    ==$MM..t/B/BC$$T%8%89 rM   c                 2    | j                   j                  dv S )N)httpswss)r^   schemere   s    rN   r   zClientRequest.is_sslf  s    xx"222rM   rB   c                     | j                   S rd   )r   re   s    rN   r   zClientRequest.ssli      yyrM   c           	         | j                   }|r*t        t        d |j                         D                    }nd }t	        | j
                  | j                  | j                         | j                  | j                  | j                  |      S )Nc              3   *   K   | ]  \  }}||f  y wrd   rL   ).0kvs      rN   	<genexpr>z/ClientRequest.connection_key.<locals>.<genexpr>q  s     )STQ1a&)Ss   )r   hashtupleitemsr   r   r   r   r   r   r   )rf   r   hs      rN   connection_keyzClientRequest.connection_keym  so    **#E)S]=P=P=R)S$STAAIIIIKKMHHJJOO
 	
rM   c                 :    | j                   j                  }|J |S rd   )r^   raw_host)rf   rets     rN   r   zClientRequest.host~  s     hh
rM   c                 .    | j                   j                  S rd   )r^   r   re   s    rN   r   zClientRequest.port  s    xx}}rM   c                     t        | j                        }t        | j                  | j                  || j
                        S rd   )r   ra   rE   r^   r_   r   )rf   ra   s     rN   request_infozClientRequest.request_info  s/    )9$,,)G488T[['4;L;LMMrM   c                     |j                   st        |      |j                  |j                  }}|r t	        j
                  ||xs d      | _        yy)z8Update destination host, port and connection type (ssl). N)r  r'   userpasswordr   r-   r   )rf   r^   usernamer  s       rN   r   zClientRequest.update_host  sH     ||S/! !XXs||())(HNCDI rM   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   r7   r   rt   r   )rf   r   partr   s       rN   r   zClientRequest.update_version  s    
 gs#*1--Q*?@$@A@**3qt9c!A$i@
 w A   9'Cs   A=.B Bc                    t               | _        t        t        | j                  j
                        }t        j                  |      rd| d}|j                  d      }| j                  j                  ?| j                  j                         s%|dt        | j                  j                        z   z  }|| j                  t        j                  <   |rut        |t        t        t         f      r|j#                         }|D ]D  \  }}|j%                         dk(  r|| j                  |<   )| j                  j'                  ||       F yy)zUpdate request headers.[]r  N:r   )r   ra   r   r[   r^   r  r   is_ipv6_addressrstripr   is_default_portr   HOSTr   dictr   r   r  loweradd)rf   ra   netlockeyvalues        rN   r   zClientRequest.update_headers  s    )4 c488,,-""6*]Fs#88==$TXX-E-E-GcC...F"(TYY'D.)#DE!--/% 1
U99;&((-DLL%LL$$S%01	 rM   c                    t        d t        |      D              | _        | j                  j	                         }|j                  | j                         | j                  j                         D ]&  \  }}||vs| j                  j                  ||       ( t        j                  |vr"t        | j                  t        j                  <   y y )Nc              3   $   K   | ]  }|d f 
 y wrd   rL   )r   hdrs     rN   r   z4ClientRequest.update_auto_headers.<locals>.<genexpr>  s      -
S$K-
s   )r   sortedr   ra   copyr   DEFAULT_HEADERSr  r   r   
USER_AGENTr6   )rf   r   used_headersr&  vals        rN   r   z!ClientRequest.update_auto_headers  s    !, -
#)*;#<-
 "
 ||((*D223,,224 	+HC,&  c*	+ ??,.,;DLL) /rM   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   COOKIEra   loadrs   r   r   r  r   r"  setr#  coded_valueoutputr  )rf   r   citer_cookiesnamer#  mrsl_vals          rN   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[[!rM   c                 f   |y| j                   j                  t        j                  d      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.Nr  z9compress can not be set if Content-Encoding header is setdeflateT)
ra   rs   r   CONTENT_ENCODINGr  r   rt   r   r[   r   )rf   r   encs      rN   r   z%ClientRequest.update_content_encoding  s    <llt44b9??A}} R   ]]dmmS1 )26--DLL../DL	 rM   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)ra   rs   r   TRANSFER_ENCODINGr  r   rt   CONTENT_LENGTHr[   rq   body)rf   tes     rN   r   z&ClientRequest.update_transfer_encoding  s    \\d44b9??A?|| D   \\""dll2 O  4=DLL//0""$,,647DII4GT001 7rM   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   r^   r   r1   
contextlibsuppressLookupErrorr0   r   r   r-   r   encodera   r   AUTHORIZATION)rf   r   r   	netrc_objs       rN   r   zClientRequest.update_auth  s    <99D<I$((--*C&(I$$[1 F+Itxx}}EF<$ 1 12CDD+/;;=T''(F Fs   !C		CrA  c                    |y t        |t              r |       }	 t        j                  j	                  |d       }|| _        | j                  stt        j                  | j                  vrX|j                  }|d| _        nBt        j                  | j                  vr&t        |      | j                  t        j                  <   |j                  sJ |j                  j                         D ]2  \  }}|| j                  v r|| j                  v r$|| j                  |<   4 y # t        j
                  $ r  t        |             }Y w xY w)N)dispositionT)r   r+   r!   PAYLOAD_REGISTRYrs   rF  rA  r   r   r@  ra   sizer[   r  r   )rf   rA  rM  r"  r#  s        rN   r   z#ClientRequest.update_body_from_data  s!   < dH%6D	$++//$/GD 	 ||""$,,6yy<#'DL**$,,><?IT%8%89 ||| LL..0 	&LS%dll"d,,, %DLL	&# "" 	$!8D>#D	$s   !D" "#E	E	expectc                    |rd| j                   t        j                  <   n=| j                   j                  t        j                  d      j	                         dk(  rd}|r | j
                  j                         | _        y y )Nz100-continuer  T)ra   r   EXPECTrs   r  r   create_future	_continue)rf   rN  s     rN   r   z$ClientRequest.update_expect_continue@  s^    (6DLL%\\dkk2.446.HF!YY446DN rM   c                 |    |r%t        |t        j                        st        d      || _        || _        || _        y )Nz,proxy_auth must be None or BasicAuth() tuple)r   r   r-   rt   r   r   r   )rf   r   r   r   s       rN   r   zClientRequest.update_proxyI  s8     jW5F5FGKLL
$*rM   c                    | j                   t        k  ry| j                   t        k(  r.| j                  j                  t        j
                        dk(  ryy| j                  j                  t        j
                        dk(  ryy)NF
keep-aliveTclose)r   r8   ra   rs   r   
CONNECTIONre   s    rN   
keep_alivezClientRequest.keep_aliveU  s_    <<-'<<=(||0L@\\doo.'9rM   connrH   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 # t        j                  $ r Y yw xY w7 7 N7 6# 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                          d{  7   Y y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 )rR  drainr   CancelledErrorprotocolr   rA  r!   Payloadwriter   	bytearray	write_eofstart_timeoutOSErrorerrnoTimeoutErrorr$   r^   r4   	Exceptionr#   )rf   r   rY  r]  chunkunderlying_excreraised_excexc_is_not_timeouts           rN   write_byteszClientRequest.write_bytesc  s    
 >>%lln$$nn$$ ==###"	%$))W__5iioof---dii%);<!%DI!YY .E ,,u---.4 ""$$$""$S %$))  . .2 %1  	B)L!/!5!5T!A " 4 4J F ","((5dhh]C 
 (L.AA%% 	%""$$$ 	%J4)T  	s   H	D DD DD H	AD= D7AD= *D9+D= 1H	D;H	D D D41H	3D44H	7D= 9D= ;H	=	HAF*%H	*)HGHH	H#H<H	HH	c                 v  K   | j                   t        j                  k(  rQ| j                  j                  }|J t        j                  |      rd| d}| d| j                  j                   }nz| j                  r&| j                         st        | j                        }nH| j                  j                  }| j                  j                  r|d| j                  j                  z   z  }|j                  }|J t        || j                  t!        j"                  | j$                  | j                   | j                        t!        j"                  | j&                  | j                   | j                              }| j(                  r|j+                  | j(                         | j,                  |j/                          | j                   | j0                  v rUt        j2                  | j4                  vr9t        j2                  | j6                  vrd| j6                  t        j2                  <   | j6                  j9                  t        j:                        }|s;| j=                         r| j>                  t@        k(  rd}n| j>                  tB        k(  rd}||| j6                  t        j:                  <   d	jE                  | j                   || j>                  
      }|jG                  || j6                         d {    | j                  jI                  | jK                  ||            | _&        | jN                  }|J  || j                   | jP                  | jL                  | jR                  | jT                  | jV                  | jX                  | j                  | jZ                  	      | _.        | j\                  S 7 w)Nr  r  r  ?)on_chunk_senton_headers_sentzapplication/octet-streamrU  rV  z {0} {1} HTTP/{v.major}.{v.minor})r   )r   continue100r   r  r   r   r   )/r_   r   METH_CONNECTr^   r  r   r  r   r   r   r[   raw_pathraw_query_stringr]  r:   r   	functoolspartial_on_chunk_request_sent_on_headers_request_sentr   enable_compressionr   enable_chunkingPOST_METHODSCONTENT_TYPEr   ra   rs   rW  rX  r   r8   r9   r   write_headerscreate_taskrk  r   r   r   rR  r   r  r   r   response)	rf   rY  connect_hostpathr]  r   
connectionstatus_liner   s	            rN   sendzClientRequest.send  s    
 ;;$+++88,,L+++&&|4!"<.2"^1TXX]]O4DZZtxx=D88$$Dxx((dhh7777==###II#++++T[[$(( &----t{{DHH	
 ==%%dmm4<<#""$ KK4,,,!!)?)??!!5.HDLL**+ \\%%doo6
 <<=0!-J<<=0!(J!,6DLL) 9??KK @ 
 "";===yy,,T-=-=fd-KL,,)))&KK<<++**<<MM

 }}# 	>s   K4N96N77CN9c                    K   | j                   At        j                  t        j                        5  | j                    d {    d d d        y y 7 # 1 sw Y   y xY wwrd   )r   rD  rE  r   r\  re   s    rN   rV  zClientRequest.close  sS     <<#$$W%;%;< #ll""# # $"# #s.   0AAAA
AAAAc                     | j                   a| j                  j                         s| j                   j                          | j                   j	                  | j
                         d | _         y y rd   )r   r   	is_closedcancelr   r   re   s    rN   	terminatezClientRequest.terminate  sP    <<#99&&(##%LL--d.A.ABDL	 $rM   rg  c                 h   K   | j                   D ]  }|j                  |||       d {     y 7 wrd   )r   send_request_chunk_sent)rf   r_   r^   rg  traces        rN   rv  z$ClientRequest._on_chunk_request_sent  s6     \\ 	DE//UCCC	DC   &202zCIMultiDict[str]c                 h   K   | j                   D ]  }|j                  |||       d {     y 7 wrd   )r   send_request_headers)rf   r_   r^   ra   r  s        rN   rw  z&ClientRequest._on_headers_request_sent  s8      \\ 	CE,,VS'BBB	CBr  rd   rJ   N)F)rY  rH   rJ   rD   )RrX   rY   rZ   r   METH_GET	METH_HEADMETH_OPTIONS
METH_TRACEr   
METH_PATCH	METH_POSTMETH_PUTrz  unionMETH_DELETEALL_METHODSACCEPTACCEPT_ENCODINGrO   r)  rA  r   r~  r   rR  	frozensetr   r9   r[   r   r   r   r@   r   r   r?   r-   r7   r   r   AbstractEventLoopr   r,   r   rB   rF   r   ry   objectr   r   r   setterr   r   r   r  r   r   r   rE   r  r   r   r   r   r   r   r   r   r   r   r   rX  r"   rk  r  rV  r  r   rv  rw  rL   rM   rN   rC   rC      s   	K OOT^^T]]CL##L1779I9I8JKK 	U:<O
 DDHHI /3*.+4;*.$($($6$6"&"&48;?#*.,0-14804*.)-3QQ Q
 c*+Q ,'Q $C=Q Q ,'Q y!Q !!Q 3-Q $Q Q w001Q  !&6!78!Q" }#Q$ Y'%Q& ()'Q( /*)Q* :t[01+Q,  --Q. g'/Q0 1Q2 "#3Qf $  "67   ^^:h';< : : :3 3 U<{:;   
 
 
  c  
 hsm   Nk N N	Ds 	Dt 	DeD,<,<c,A&B t 1h|&< 1 12<Xc] <t <Ih|&< I I2 C  D  "H,9 3 9 9QU 9  &#  &$  &D7T 7d 7
+}
+ Y'
+  -	
+
 

+D 0%*0%2>0%	0%dOb#
 D3 DS D DSW DCC #C.@C	CrM   rC   c                      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d<   dZdZeej(                     ed<   d	Z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ZdIdeddfdZ e!ded   fd       Z"e"jF                  ded   ddfd       Z"e$defd       Z%e$defd       Z&e$defd        Z'e$de
fd!       Z(e$dJd"       Z)e$defd#       Z*e$defd$       Z+e$dee,   fd%       Z-e.fd&e/ddfd'Z0de
fd(Z1e!ded)   fd*       Z2e$de3d+   fd,       Z4e$dKd-       Z5dLd.Z6dMd/Z7e!de8fd0       Z9dMd1Z:de/fd2Z;e!de8fd3       Z<dMd4Z=dMd5Z>dMd6Z?dMd7Z@dMd8ZAdMd9ZBdeCfd:ZDde
fd;ZEdNd<ee
   d=e
de
fd>ZFdeGd?d@d<ee
   dAeHdBee
   de/fdCZIdOdDZJdEeeKeL      dFeeL   dGeeM   ddfdHZNy)PrD   Nr   statusreasoncontent_headers_raw_headersr   TFr_   r^   r   r   rp  zasyncio.Future[bool]r   r  r   rI   r   r   rG   rJ   c                   t        |t              sJ || _        t               | _        || _        |j                  d       | _        d | _        || _	        || _
        d| _        d| _        || _        ||n	t               | _        i | _        || _        || _        |	| _        |		d | _        n|	j(                  | _        |j+                         r.t-        j.                  t1        j2                  d            | _        y y )NTrL   c                       y)Nutf-8rL   )r   s    rN   <lambda>z)ClientResponse.__init__.<locals>.<lambda>9  s    rM   r   )r   r   r_   r   r   	_real_urlr   _url_bodyr   rR  _closed_history_request_infor/   r   _cacher   _loopr   _resolve_charsetr   r   r   r   r   r   )
rf   r_   r^   r   rp  r   r  r   r   r   s
             rN   ry   zClientResponse.__init__  s     #s####~%%d+	
5;$46)$0eik&(
18 ? # ! %,$<$<D!>>%.%<%<S]]1=M%ND" rM   r   c                     d | _         y rd   _ClientResponse__writerr   s     rN   r   zClientResponse.__reset_writer?  r   rM   c                     | j                   S rd   r  re   s    rN   r   zClientResponse._writerB  r   rM   c                     | j                   %| j                   j                  | j                         || _         ||j                  | j                         y y rd   )r  r   _ClientResponse__reset_writerr   r   s     rN   r   zClientResponse._writerF  r   rM   c                     | j                   S rd   )r  re   s    rN   r^   zClientResponse.urlN  r   rM   c                 R    t        j                  dt        d       | j                  S )NzDeprecated, use .url #1654   r   )r   r   r   r  re   s    rN   url_objzClientResponse.url_objR  s    24FSTUyyrM   c                     | j                   S rd   )r  re   s    rN   rb   zClientResponse.real_urlW  s    ~~rM   c                 ^    | j                   j                  J | j                   j                  S rd   )r  r   re   s    rN   r   zClientResponse.host[  s$    yy~~)))yy~~rM   c                     | j                   S rd   )r  re   s    rN   ra   zClientResponse.headers`  r   rM   c                     | j                   S rd   )r  re   s    rN   raw_headerszClientResponse.raw_headersd  r{   rM   c                     | j                   S rd   )r  re   s    rN   r  zClientResponse.request_infoh  s    !!!rM   c                     | j                   j                  t        j                        }|y t	        j
                  |      \  }}t        |      }t	        j                  |      }t        |||      S rd   )	r  rs   r   CONTENT_DISPOSITIONr    parse_content_dispositionr	   content_disposition_filenamerT   )rf   rawdisposition_type
params_dctr   rW   s         rN   content_dispositionz"ClientResponse.content_dispositionl  sd    mm 8 89;'0'J'J3'O$*!*-99&A!"2FHEErM   	_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)
r  _connectionrelease_cleanup_writerr  r   r   ResourceWarningr   call_exception_handler)rf   r  kwargscontexts       rN   __del__zClientResponse.__del__v  s    <<'$$&  "zz##%"D)	!3D8<oXQWX.2?RS))262H2HG./

11': &	 (rM   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[   r^   r  rG  decodeprintr   r  ra   getvalue)rf   outascii_encodable_urlascii_encodable_reasons       rN   __repr__zClientResponse.__repr__  s    kkm!$((m;;%)[[%7%7+&fWo # &,"*11#T[[2H 		
 	dll%||~rM   rH   c                     | j                   S rd   )r  re   s    rN   r  zClientResponse.connection  s    rM   )rD   .c                     | j                   S )z2A sequence of of responses, if redirects occurred.)r  re   s    rN   historyzClientResponse.history  s     }}rM   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*$relr^   )joinra   getallr   r   rer  r   groupsMr   rs   r^   r   r[   )rf   	links_strlinksr,  r   r^   
params_strr   r  paramr"  r   r#  s                rN   r  zClientResponse.links  s@   IIdll11&"=>	!)+..<EK88L)4 	6C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/	62 e$$rM   c           	      4  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      D ]  }	 | j8                  j;                  |         | S 7 .# t        j                  $ rH}t        | j                  | j                  |j                  |j                  |j                        |d}~ww xY w# 1 sw Y   0xY w# t<        $ r }t?        j@                  d	|       Y d}~d}~ww xY ww)
zStart response processing.FTNr  r  ra   d      e   rL   z!Can not load response cookies: %s)!r  r]  	_protocolr  r   readr   HttpProcessingErrorr%   r  r  coder  ra   rR  r5   on_eof_response_eofr   r  r  r  r  r  r  r  r   
SET_COOKIEr   r2  r   r;   warning)rf   r  r]  r  r!   excr&  s          rN   startzClientResponse.start  s    #,,%[[ 	*
#~~H-5]]_'<$GW <<#%);w||s?R>>-t~~t4%)DN'  !	*. 	t))* llnn  #//  <<&&t; 	PCP!!#&	P
 M (=// -))"xx # # 	* 	*R  P%%&I3OOPs~   ,HGFE>FAG1B-HG,:H>FGAGGGG)$H,	H5HHHHc                     | j                   ry | j                  xr | j                  j                  }||j                  ry d| _         | j	                          | j                          y NT)r  r  r]  upgradedr  _release_connection)rf   r]  s     rN   r   zClientResponse._response_eof  sZ    << ##A(8(8(A(AH$5$5  "rM   c                     | j                   S rd   )r  re   s    rN   closedzClientResponse.closed  s    ||rM   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  rV  re   s    rN   rV  zClientResponse.close	  so    ~~  "::!5!5!7'""$#D (rM   c                     | j                   s| j                          d| _        | j                          | j	                          t               S r  )r  r  r  r  r  r2   re   s    rN   r  zClientResponse.release  s;    ~~  "  "vrM   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  re   s    rN   okzClientResponse.ok   s     T[[  rM   c                     | j                   s`| j                  J | j                          t        | j                  | j
                  | j                  | j                  | j                        y )Nr  )r  r  r  r%   r  r  r  ra   re   s    rN   raise_for_statuszClientResponse.raise_for_status)  sY    ww;;***LLN%!!{{ 	 rM   c                       j                   M j                  " j                   j                          d  _         y  j                  j                   fd       y y )Nc                 $    j                         S rd   )r  )frf   s    rN   r  z4ClientResponse._release_connection.<locals>.<lambda><  s    9Q9Q9S rM   )r  r   r  r   re   s   `rN   r  z"ClientResponse._release_connection6  sK    '||#  ((*#' ../ST (rM   c                 p   K   | j                   | j                    d {    | j                          y 7 wrd   )r   r  re   s    rN   _wait_releasedzClientResponse._wait_released>  s.     <<#,,  "    646c                 ^    | j                   | j                   j                          d | _        y rd   )r   r  r   re   s    rN   r  zClientResponse._cleanup_writerC  s#    <<#LL!rM   c                 x    | j                   }|r%|j                         t        |t        d             d| _        y )NConnection closedT)r  	exceptionr4   r#   r  )rf   r  s     rN   r  zClientResponse._notify_contentH  s4    ,,w((*2'#89L#MNrM   c                 p   K   | j                   | j                    d {    | j                          y 7 wrd   )r   r  re   s    rN   wait_for_closezClientResponse.wait_for_closeN  s+     <<#,, 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_receivedr_   r^   BaseExceptionrV  r  r#   r  r]  r  r  )rf   r  r]  s      rN   r  zClientResponse.readS  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                 4   | j                   j                  t        j                  d      j	                         }t        j                  |      }|j                  j                  d      }|rBt        j                  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)ra   rs   r   r{  r  r   parse_mimetyperV   rD  rE  rF  codecslookupr8  rU   subtyper  RuntimeErrorr  )rf   ctypemimetypeencodings       rN   get_encodingzClientResponse.get_encodingg  s      !2!2B7==?))%0&&**95$$[1 4}}X.334 4 ==M)&(*:*:f*D ::I  $$T4::664 4s   DDr.  errorsc                    K   | j                   | j                          d{    || j                         }| j                   j                  ||      S 7 3w)z!Read response payload and decode.N)r0  )r  r  r/  r  )rf   r.  r0  s      rN   textzClientResponse.text~  sY     ::))+((*Hzz  V ! 
 	
 s    AA4Ar   )r.  loadscontent_typer3  r4  c                  K   | j                   | j                          d{    |rt| j                  j                  t        j
                  d      j                         }t        ||      s0t        | 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: %s)r  ra   )r  r  ra   rs   r   r{  r  r   r&   r  r  r  r/  r  )rf   r.  r3  r4  r,  strippeds         rN   r%  zClientResponse.json  s      ::))+LL$$T%6%6;AACE,ULA&%%LLPSXX LL  ::##%((*HX__X.//+ s    C%C#CC%c                    K   | S wrd   rL   re   s    rN   
__aenter__zClientResponse.__aenter__  s     s   exc_typeexc_valexc_tbc                 `   K   | j                          | j                          d {    y 7 wrd   )r  r  )rf   r9  r:  r;  s       rN   	__aexit__zClientResponse.__aexit__  s#      	!!###s   $.,.rd   )rJ   r`   )rJ   z/MultiDictProxy[MultiDictProxy[Union[str, URL]]])r  rH   rJ   rD   r  )Nstrict)rJ   rD   )OrX   rY   rZ   r   r   r7   r\   r  r   r  r[   r  r<   r  r   r  rA   r  r   r   StackSummaryr  r  r  r   r,   rE   r   r   r  ry   r  r  r   r   r  r3   r^   r  rb   r   ra   r  r  rT   r  r   r   r  r  r  r   r  r  r  r   r   r
  rV  r  r  r  r  r  r  r  r  r   r  r/  r2  r=   r>   r%  r8  r   r!  r
   r=  rL   rM   rN   rD   rD     s    &*GXk")FC FHSM  G\ &*Hs#*#L*#K:>x	 6 67> GIH*O*O *O
 %*O 45*O  *O "*O W*O ''*O !*O 
*OX $  "67   ^^:h';< : : : S      #   c     !Z ! ! "k " " FX.@%A F F (0 ; ;D ; # $  H\2     45   !% !%F1f#   $  !D ! !U#


E (7c 7.

8C= 

 

TW 

 #'1&80 3-0 	0
 sm0 
0@
$4./
$ -(
$ '	
$
 

$rM   rD   )rr   r(  rD  rt  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   rh   	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:   logr;   streamsr<   typedefsr=   r>   r?   r@   rA   r   rB   ImportErrorr  __all__clientrG   	connectorrH   tracingrI   compiler   r   r[   rO   srT   rE   rF   r   rU   r   r   r   r   r   rC   rD   rL   rM   rN   <module>rT     sL       	 	 
   % % : : 1     N N  5 5 %  *      !  L %% 'BJJ'EF 
"**9
:Bc B T$d3  4 T$d3  4P PD ?{DJGtDz*4	|T;.	/44 ,'4 %	4
 <{*+4n Td3	& 	& 4	&::7::	:QC QChz$\ z$c  
CJs   $
H 	HH