+
    TŎi                     $   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t
 ^ RIHtHtHt ^ RIHtHt ^ RIHtHt ^ RIHtHtHtHtHtHtHtHtHtHtH t H!t! ^ RI"t"^ RI#H$t$H%t%H&t&H't' ^ RI(H)t) ^R	I*H+t+H,t,H-t-H.t.H/t/ ^R
I0H1t1H2t2H3t3 ^RI4H5t5 ^RI6H7t7H8t8H9t9H:t:H;t;H<t< ^RI=H>t>H?t? ^RI@HAtA ^RI,HBtBHCtCHDtDHEtEHFtFHGtGHHtHHItIHJtJHKtK ^RI-HLtLHMtMHNtNHOtOHPtP ^RIQHRtR ^RISHTtTHUtUHVtVHWtWHXtXHYtY ]'       d   ^ RIZtZ^ RIZH[t[ M ^ RIZtZ^ RIZH[t[ R2t^]'       d   ^RI_H`t` ^RIaHbtb ^RIcHdtd ]7! R4      te]P                  ! R4      tg]P                  ! R4      thR R lti]"P                  ! R R R R!7       ! R" R#4      4       tk ! R$ R%]4      tl ! R& R]l4      tm ! R' R4      tn]Ze   ]ZP                  ]o]n]p! R4      3tqM
]o]p! R4      3tqR( R) ltr]s! R34      tt ! R* R+]4      tuR, R- ltvR4R. R/ lltw ! R0 R]E4      tx ! R1 R4      tyR#   ]\ d	    RtZ]]t[ ELi ; i)5    N)Mapping)md5sha1sha256)MorselSimpleCookie)MappingProxyTypeTracebackType)TYPE_CHECKINGAnyCallableDictIterableListLiteral
NamedTupleOptionalTupleTypeUnion)CIMultiDictCIMultiDictProxy	MultiDictMultiDictProxyURL)hdrshelpershttp	multipartpayload)parse_cookie_headerparse_set_cookie_headers preserve_morsel_with_coded_value)AbstractStreamWriter)ClientConnectionErrorClientOSErrorClientResponseErrorContentTypeError
InvalidURLServerFingerprintMismatch)
HAS_BROTLIHAS_ZSTD)FormData)
	_SENTINELBaseTimerContext	BasicAuthHeadersMixin	TimerNoopnoopreifysentinelset_exception
set_result)SERVER_SOFTWAREHttpVersionHttpVersion10HttpVersion11StreamWriter)StreamReader)DEFAULT_JSON_DECODERJSONDecoderLooseCookiesLooseHeadersQuery
RawHeaders)
SSLContextClientRequestClientResponseRequestInfoFingerprint)ClientSession)
Connection)TraceConnection closedz[^-!#$%&'*+.^_`|~0-9a-zA-Z]z!^application/(?:[\w.+-]+?\+)?jsonc                $    V ^8  d   QhR\         /#    returnstr)formats   "d/Users/ahmad/.openclaw/workspace/scripts/.venv/lib/python3.14/site-packages/aiohttp/client_reqrep.py__annotate__rV   i   s     	  	 c 	     c                      R R.p \         '       d   V P                  R4       \        '       d   V P                  R4       RP                  V 4      # )gzipdeflatebrzstd, )r,   appendr-   join)	encodingss    rU   _gen_default_accept_encodingra   i   sF    I zx 99YrW   T)auto_attribsfrozenslotsc                   ,   a  ] tR t^ut o V 3R ltRtV tR# )ContentDispositionc                \   < V ^8  d   Qh/ S[ S[,          ;R&   R;R&   S[ S[,          ;R&   # )rP   typezMappingProxyType[str, str]
parametersfilenamer   rS   )rT   __classdict__s   "rU   rV   ContentDisposition.__annotate__u   s2     
3-  -,  sm	 rW    N__name__
__module____qualname____firstlineno____annotate_func____static_attributes____classdictcell__rl   s   @rU   rf   rf   u         rW   rf   c                   ,   a  ] tR t^|t o V 3R ltRtV tR# )_RequestInfoc                H   < V ^8  d   Qh/ S[ ;R&   S[;R&   R;R&   S[ ;R&   # )rP   urlmethodCIMultiDictProxy[str]headersreal_url)r   rS   )rT   rl   s   "rU   rV   _RequestInfo.__annotate__|   s2     	H K  %$  M	 rW   rn   Nro   rw   s   @rU   rz   rz   |   rx   rW   rz   c                   8   a  ] tR t^t o ]3V 3R lR lltRtV tR# )rH   c          
      J   < V ^8  d   QhRS[ RS[RRRS[S[ S[3,          RR/# )rP   r|   r}   r   r~   r   rQ   rH   )r   rS   r   r/   )rT   rl   s   "rU   rV   RequestInfo.__annotate__   sF     
 

 
 )	

 Y'
 

rW   c                T    \         P                  YY#V\        J d   V34      # T34      # )zeCreate a new RequestInfo instance.

For backwards compatibility, the real_url parameter is optional.
)tuple__new__r6   )clsr|   r}   r   r   s   &&&&&rU   r   RequestInfo.__new__   s6     }}vx8/CR
 	
IQR
 	
rW   rn   N)rp   rq   rr   rs   r6   r   ru   rv   rw   s   @rU   rH   rH      s      +3
 
 
rW   c                   p   a  ] tR t^t o ^]^]^ ]/tV 3R lR lt]	V 3R lR l4       t
V 3R lR ltRtV tR# )	rI   c                $   < V ^8  d   QhRS[ RR/# )rP   fingerprintrQ   Nbytes)rT   rl   s   "rU   rV   Fingerprint.__annotate__   s     ( (E (d (rW   c                    \        V4      pV P                  P                  V4      pV'       g   \        R 4      hV\        J g   V\
        J d   \        R4      hW0n        Wn        R# )zfingerprint has invalid lengthz8md5 and sha1 are insecure and not supported. Use sha256.N)lenHASHFUNC_BY_DIGESTLENget
ValueErrorr   r   	_hashfunc_fingerprint)selfr   	digestlenhashfuncs   &&  rU   __init__Fingerprint.__init__   sV    $	--11)<=>>_D 0WXX!'rW   c                    < V ^8  d   QhRS[ /# rO   r   )rT   rl   s   "rU   rV   r      s     ! !U !rW   c                    V P                   # N)r   r   s   &rU   r   Fingerprint.fingerprint          rW   c                8   < V ^8  d   QhRS[ P                  RR/# )rP   	transportrQ   N)asyncio	Transport)rT   rl   s   "rU   rV   r      s%     P Pw00 PT PrW   c                0   VP                  R 4      '       g   R# VP                  R4      pVP                  RR7      pV P                  V4      P                  4       pW@P                  8w  d+   VP                  R4      vrVp\        V P                  WEV4      hR# )
sslcontextN
ssl_objectT)binary_formpeername)get_extra_infogetpeercertr   digestr   r+   )r   r   sslobjcertgothostport_s   &&      rU   checkFingerprint.check   s    ''55)),7!!d!3nnT"))+###&55jAND+D,=,=s$OO $rW   )r   r   N)rp   rq   rr   rs   r   r   r   r   r   propertyr   r   ru   rv   rw   s   @rU   rI   rI      sF     
C
D
F( ( ! !P PrW   c                    V ^8  d   QhR\         R\        \        3,          R\        \        ,          R\        R,          R\        \        ,          R\         R\        \        3,          /# )rP   sslrE   
verify_sslssl_contextr   rQ   )r   boolrI   r   r   )rT   s   "rU   rV   rV      s_     4 4	|T;.	/44 ,'4 %	4
 <{*+4rW   c                    V f   Rp Ve9   V'       g1   \         P                  ! R\        ^R7       V RJd   \        R4      hRp Ve1   \         P                  ! R\        ^R7       V RJd   \        R4      hTp Ve:   \         P                  ! R\        ^R7       V RJd   \        R4      h\	        V4      p \        V \        4      '       g   \        RP                  V 4      4      hV # )	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DeprecationWarningr   rI   
isinstanceSSL_ALLOWED_TYPES	TypeErrorrT   )r   r   r   r   s   &&&&rU   _merge_ssl_paramsr      s     {j=	

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

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

 d?4 
 k*Cc,--  &s
 	
 JrW   c                   ,   a  ] tR t^t o V 3R ltRtV tR# )ConnectionKeyc                   < V ^8  d   Qh/ S[ ;R&   S[S[,          ;R&   S[;R&   S[S[S[S[3,          ;R&   S[S[,          ;R&   S[S[,          ;R&   S[S[,          ;R&   # )rP   r   r   is_sslr   proxy
proxy_authproxy_headers_hash)	rS   r   intr   r   rE   rI   r   r1   )rT   rl   s   "rU   rV   ConnectionKey.__annotate__   s{      I  3-	 
 L  
z4,	--  C=  ##  !% rW   rn   Nro   rw   s   @rU   r   r      rx   rW   r   c                <    V ^8  d   QhR\         R\         R\        /# )rP   response_content_typeexpected_content_typerQ   )rS   r   )rT   s   "rU   rV   rV     s$     : ::7::	:rW   c                 F    VR 8X  d   \         P                  V 4      RJ# W9   # )application/jsonN)json_rematch)r   r   s   &&rU   _is_expected_content_typer     s+      22}}234?? 99rW   c                H    V ^8  d   QhR\         P                  R\        RR/# )rP   r!   r   rQ   N)r!   Payloadr   )rT   s   "rU   rV   rV     s&     
 
w 
C 
PT 
rW   c                    V P                   '       g4   V P                  '       g    \        P                  ! R\        VR7       R# R# R# )zWarn if the payload is not closed.

Callers must check that the body is a Payload before calling this method.

Args:
    payload: The payload to check
    stacklevel: Stack level for the warning (default 2 for direct callers)
zThe previous request body contains unclosed resources. Use await request.update_body() instead of setting request.body directly to properly close resources and avoid leaks.r   N)	autocloseconsumedr   r   ResourceWarning)r!   r   s   &&rU   _warn_if_unclosed_payloadr     s=     W%5%5%5D !	
 &6rW   c                     a  ] tR tRt o RtRtRtRtRtRt	RVt
RtRtRtRtRtRtRtRtRtRtR tRtV 3R lR ltRWV 3R lR	 llt]V 3R
 lR l4       t]P6                  V 3R lR l4       t]V 3R lR l4       t]P6                  V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       t ]V 3R lR l4       t!]V 3R lR l4       t"]V 3R lR l4       t#]V 3R lR l4       t$]V 3R  lR! l4       t%]&3V 3R" lR# llt'V 3R$ lR% lt(]V 3R& lR' l4       t)]V 3R( lR) l4       t*]V 3R* lR+ l4       t+V 3R, lR- lt,V 3R. lR/ lt-]V 3R0 lR1 l4       t.V 3R2 lR3 lt/V 3R4 lR5 lt0]V 3R6 lR7 l4       t1V 3R8 lR9 lt2V 3R: lR; lt3V 3R< lR= lt4V 3R> lR? lt5V 3R@ lRA lt6V 3RB lRC lt7V 3RD lRE lt8V 3RF lRG lt9RXV 3RH lRI llt:RJRRK];RLRM/V 3RN lRO llt<V 3RP lRQ lt=V 3RR lRS lt>V 3RT lt?RUt@V tAR# )YrG   i  NTFc                     R # )utf-8rn   )r   s   *rU   <lambda>ClientResponse.<lambda>;  s    GrW   c                   < V ^8  d   QhRS[ RS[RRRS[R,          RS[RS[R	S[R
,          RS[P                  RRRR/
# )rP   r}   r|   writerzOptional[asyncio.Task[None]]continue100asyncio.Future[bool]timerrequest_infotracesrL   loopsessionrJ   rQ   N)rS   r   r   r0   rH   r   r   AbstractEventLoop)rT   rl   s   "rU   rV   ClientResponse.__annotate__?  s     %O %O%O %O
 /%O 45%O  %O "%O W%O ''%O !%O 
%OrW   c                  \        V4      \        J g   Q hWn        W n        VP                  '       d   VP                  R 4      MTV n        Ve   W0n        Ve   W@n        W`n	        Ve   TM	\        4       V n        / V n        Wpn        Wn        V	e   Wn        V	P                   V n        VP#                  4       '       d2   \$        P&                  ! \(        P*                  ! ^4      4      V n        R # R # r   )rh   r   r}   	_real_urlraw_fragmentwith_fragment_url_writer	_continue_request_infor3   _timer_cache_traces_loop_session_resolve_charset	get_debug	tracebackextract_stacksys	_getframe_source_traceback)
r   r}   r|   r   r   r   r   r   r   r   s
   &&&$$$$$$$rU   r   ClientResponse.__init__?  s     CyC/2/?/?/?C%%d+S	!L"(N)$0eik&(
 #M$+$<$<D!>>%.%<%<S]]1=M%ND" rW   c                $   < V ^8  d   QhRS[ RR/# rP   r   rQ   Nobject)rT   rl   s   "rU   rV   r   f         $ rW   c                    R V n         R # r   _ClientResponse__writerr   r   s   &&rU   __reset_writerClientResponse.__reset_writerf  	    rW   c                .   < V ^8  d   QhRS[ R,          /# rP   rQ   asyncio.Task[None]r   )rT   rl   s   "rU   rV   r   j  s      "67 rW   c                    V P                   # )zThe writer task for streaming data.

_writer is only provided for backwards compatibility
for subclasses that may need to access it.
r	  r   s   &rU   r   ClientResponse._writeri  s     }}rW   c                2   < V ^8  d   QhRS[ R,          RR/# rP   r   r  rQ   Nr  )rT   rl   s   "rU   rV   r   s  s!     : :h';< : :rW   c                    V P                   e&   V P                   P                  V P                  4       Wn         Vf   R# VP                  4       '       d
   RV n         R# VP	                  V P                  4       R# )z'Set the writer task for streaming data.N)r
  remove_done_callback_ClientResponse__reset_writerdoneadd_done_callbackr   r   s   &&rU   r   r  r  sY     ==$MM..t/B/BC>;;== DM$$T%8%89rW   c                    < V ^8  d   QhRS[ /# rO   r   )rT   rl   s   "rU   rV   r     s       rW   c                    V P                   f^   V P                  eA   \        4       pVP                  \	        V P                  4      4       Wn         V P                   # \        4       V n         V P                   # r   )_cookies_raw_cookie_headersr   updater#   r   cookiess   & rU   r$  ClientResponse.cookies  s_    == ''3&. 78P8PQR ' }} !-}}rW   c                $   < V ^8  d   QhRS[ RR/# rP   r$  rQ   Nr  )rT   rl   s   "rU   rV   r     s     , ,| , ,rW   c                    Wn         V'       dP   \        ;QJ d"    . R  VP                  4        4       F  NK  	  5M! R  VP                  4        4       4      V n        R# RV n        R# )c              3   @   "   T F  qP                  4       x  K  	  R # 5ir   )OutputString).0morsels   & rU   	<genexpr>)ClientResponse.cookies.<locals>.<genexpr>  s      -4D&##%%4Ds   N)r   r   valuesr!  r#  s   &&rU   r$  r%    sO    ',u -4;NN4D-uu -4;NN4D- (D$ (,D$rW   c                    < V ^8  d   QhRS[ /# rO   r   )rT   rl   s   "rU   rV   r     s      S rW   c                    V P                   # r   )r   r   s   &rU   r|   ClientResponse.url      yyrW   c                    < V ^8  d   QhRS[ /# rO   r   )rT   rl   s   "rU   rV   r     s       rW   c                T    \         P                  ! R \        ^R7       V P                  # )zDeprecated, use .url #1654r   )r   r   r   r   r   s   &rU   url_objClientResponse.url_obj  s    24FSTUyyrW   c                    < V ^8  d   QhRS[ /# rO   r   )rT   rl   s   "rU   rV   r     s      # rW   c                    V P                   # r   )r   r   s   &rU   r   ClientResponse.real_url  s    ~~rW   c                    < V ^8  d   QhRS[ /# rO   rR   )rT   rl   s   "rU   rV   r     s      c rW   c                b    V P                   P                  f   Q hV P                   P                  # r   )r   r   r   s   &rU   r   ClientResponse.host  s$    yy~~)))yy~~rW   c                   < V ^8  d   QhRR/# )rP   rQ   r~   rn   )rT   rl   s   "rU   rV   r     s      0 rW   c                    V P                   # r   )_headersr   s   &rU   r   ClientResponse.headers      }}rW   c                    < V ^8  d   QhRS[ /# rO   )rD   )rT   rl   s   "rU   rV   r     s     ! !Z !rW   c                    V P                   # r   )_raw_headersr   s   &rU   raw_headersClientResponse.raw_headers  r   rW   c                    < V ^8  d   QhRS[ /# rO   rH   )rT   rl   s   "rU   rV   r     s     " "k "rW   c                    V P                   # r   )r   r   s   &rU   r   ClientResponse.request_info  s    !!!rW   c                0   < V ^8  d   QhRS[ S[,          /# rO   )r   rf   )rT   rl   s   "rU   rV   r     s     F FX.@%A FrW   c                    V P                   P                  \        P                  4      pVf   R # \        P
                  ! V4      w  r#\        V4      p\        P                  ! V4      p\        W$V4      # r   )	r@  r   r   CONTENT_DISPOSITIONr    parse_content_dispositionr	   content_disposition_filenamerf   )r   rawdisposition_type
params_dctparamsrj   s   &     rU   content_disposition"ClientResponse.content_disposition  s`    mm 8 89;'0'J'J3'O$!*-99&A!"2HEErW   c                $   < V ^8  d   QhRS[ RR/# )rP   	_warningsrQ   Nr   )rT   rl   s   "rU   rV   r     s     ; ; ;D ;rW   c                   V P                   '       d   R # V P                  e   V P                  P                  4        V P                  4        V P                  P                  4       '       de   RV /pVP                  ! RV : 2\        3/ VB  RV RR/pV P                  '       d   V P                  VR&   V P                  P                  V4       R # R # R # )NsourcezUnclosed response client_responsemessagezUnclosed responsesource_traceback)
_closed_connectionrelease_cleanup_writerr   r   r   r   r  call_exception_handler)r   rX  kwargscontexts   &&  rU   __del__ClientResponse.__del__  s    <<<'$$&  "zz##%%"D)!3D8<oXQWX,dI?RS)))262H2HG./

11': &	 (rW   c                    < V ^8  d   QhRS[ /# rO   rR   )rT   rl   s   "rU   rV   r     s      # rW   c                r   \         P                  ! 4       p\        V P                  4      pV P                  '       d-   V P                  P                  R R4      P                  R 4      pMRp\        RP                  W P                  V4      VR7       \        V P                  VR7       VP                  4       # )asciibackslashreplaceNonez<ClientResponse({}) [{} {}]>)file)ioStringIOrS   r|   reasonencodedecodeprintrT   statusr   getvalue)r   outascii_encodable_urlascii_encodable_reasons   &   rU   __repr__ClientResponse.__repr__  s    kkm!$((m;;;%)[[%7%7+&fWo # &,"*11#[[2H 		
 	dll%||~rW   c                .   < V ^8  d   QhRS[ R,          /# )rP   rQ   rK   r  )rT   rl   s   "rU   rV   r     s        H\2  rW   c                    V P                   # r   )r`  r   s   &rU   
connectionClientResponse.connection  s    rW   c                .   < V ^8  d   QhRS[ R,          /# )rP   rQ   rG   .)r   )rT   rl   s   "rU   rV   r     s      45 rW   c                    V P                   # )z2A sequence of of responses, if redirects occurred.)_historyr   s   &rU   historyClientResponse.history  s     }}rW   c                   < V ^8  d   QhRR/# )rP   rQ   z/MultiDictProxy[MultiDictProxy[Union[str, URL]]]rn   )rT   rl   s   "rU   rV   r     s     !% !%H !%rW   c           	         R P                  V P                  P                  R. 4      4      pV'       g   \        \	        4       4      # \	        4       p\
        P                  ! RV4       EF  p\
        P                  ! RV4      pVf   K!  VP                  4       w  rVVP                  R4      R,          p\	        4       pV FS  p	\
        P                  ! RV	\
        P                  4      pVf   K/  VP                  4       w  rrVP                  W4       KU  	  VP                  RV4      p
VP                  RV P                  P                  \        V4      4      4       VP                  \        V
4      \        V4      4       EK  	  \        V4      # )	r]   linkz	,(?=\s*<)z\s*<(.*)>(.*);:   NNz%^\s*(\S*)\s*=\s*(['\"]?)(.*?)(\2)\s*$relr|   )r_   r   getallr   r   resplitr   groupsMaddr   r|   r   rS   )r   	links_strlinksvalr   r|   
params_strrT  r  paramkeyr   values   &            rU   r  ClientResponse.links  s,   IIdll11&"=>	!)+..<EK88L)4CHH-s3E}#llnOC%%c*2.F/8{D!I5RTRVRVW=#(<<> $   ((5#&CHHUDHHMM#c(34IIc#ht 45/ 52 e$$rW   c                "   < V ^8  d   QhRRRR/# )rP   r}  rK   rQ   rG   rn   )rT   rl   s   "rU   rV   r     s     / /l /7G /rW   c                  "   RV n         VP                  V n        Wn        V P                  ;_uu_ 4          V P                  pVP                  4       G Rj  xL
 w  r4TP                  ^d8  g#   TP                  ^8  g   TP                  ^e8X  d   M/T P                  f   Kl  \        T P                  R4       RT n        K  RRR4       XP                   ! T P"                  4       XP$                  T n        TP                  T n        TP(                  T n        TP                  T n        TP,                  T n        Y@n        T P                  P3                  \4        P6                  R4      ;p'       d   \9        T4      T n        T #  EL-  \        P                   dI   p\        T P                  T P                  TP                  TP                  TP                  R7      ThRp?ii ; i  + '       g   i     EL/; i5i)zStart response processing.FTNrt  r]  r   rn   )r_  protocol	_protocolr`  r   readr   HttpProcessingErrorr(   r   r  coder]  r   r   r8   on_eof_response_eofversionrt  rp  r@  rF  rE  contentr  r   
SET_COOKIEr   r!  )r   r}  r  r]  r!   exccookie_hdrss   &&     rU   startClientResponse.start  s~    #,,%[[[
#~~H-5]]_'<$G <<#%);w||s?R>>-t~~t4%)DN) . 	t))* llnn  #//  ,,--doorBB;B',['9D$I (=// -))"xx # #  [[sY   3G;G'FFF?G'"G'CG;FG$AGG$$G''G8	2	G;c                   < V ^8  d   QhRR/# rP   rQ   Nrn   )rT   rl   s   "rU   rV   r   A  s     # #t #rW   c                    V P                   '       d   R # V P                  ;'       d    V P                  P                  pVe   VP                  '       d   R # RV n         V P	                  4        V P                  4        R # NT)r_  r`  r  upgradedrb  _release_connection)r   r  s   & rU   r  ClientResponse._response_eofA  sb    <<< ##AA(8(8(A(AH$5$5$5  "rW   c                    < V ^8  d   QhRS[ /# rO   r   )rT   rl   s   "rU   rV   r   O  s       rW   c                    V P                   # r   )r_  r   s   &rU   closedClientResponse.closedN  s    ||rW   c                   < V ^8  d   QhRR/# r  rn   )rT   rl   s   "rU   rV   r   R  s     $ $t $rW   c                :   V P                   '       g   V P                  4        R V n        V P                  e!   V P                  P	                  4       '       d   R# V P                  4        V P                  e$   V P                  P                  4        RV n        R# R# )TN)	_released_notify_contentr_  r   	is_closedrb  r`  closer   s   &rU   r  ClientResponse.closeR  st    ~~~  "::!5!5!7!7'""$#D (rW   c                    < V ^8  d   QhRS[ /# rO   rY  )rT   rl   s   "rU   rV   r   _  s       rW   c                    V P                   '       g   V P                  4        R V n        V P                  4        V P	                  4        \        4       # T)r  r  r_  rb  r  r4   r   s   &rU   ra  ClientResponse.release_  s=    ~~~  "  "vrW   c                    < V ^8  d   QhRS[ /# rO   r  )rT   rl   s   "rU   rV   r   j  s     ! !D !rW   c                     RV P                   8  # )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  )rt  r   s   &rU   okClientResponse.oki  s     T[[  rW   c                   < V ^8  d   QhRR/# r  rn   )rT   rl   s   "rU   rV   r   r  s      $ rW   c                   V P                   '       gu   V P                  f   Q hV P                  '       g   V P                  4        \	        V P
                  V P                  V P                  V P                  V P                  R7      hR # )Nr  )	r  rp  _in_contextra  r(   r   r  rt  r   r   s   &rU   raise_for_statusClientResponse.raise_for_statusr  si    www;;*** ###%!!{{  rW   c                   < V ^8  d   QhRR/# r  rn   )rT   rl   s   "rU   rV   r     s     V VT VrW   c                   a  S P                   eS   S P                  f$   S P                   P                  4        R S n         R # S P                  P                  V 3R l4       R # R # )Nc                 $   < SP                  4       # r   )r  )fr   s   &rU   r   4ClientResponse._release_connection.<locals>.<lambda>  s    $:R:R:TrW   )r`  r
  ra  r  r   s   frU   r  "ClientResponse._release_connection  sK    '}}$  ((*#' //0TU (rW   c                   < V ^8  d   QhRR/# r  rn   )rT   rl   s   "rU   rV   r     s     # #d #rW   c                @  "   V P                   e    V P                   G R j  xL
  V P                  4        R #  L  \        P                   dM    \        P                  R8  d5   \        P
                  ! 4       ;p'       d   TP                  4       '       d   h  Lti ; i5iN)      )r
  r   CancelledErrorr   version_infocurrent_task
cancellingr  r   tasks   & rU   _wait_releasedClientResponse._wait_released  s{     ==$mm## 	  " $)) $$/!(!5!5!777))>   B: 8: B: ABBBBBBc                   < V ^8  d   QhRR/# r  rn   )rT   rl   s   "rU   rV   r     s       rW   c                d    V P                   e   V P                   P                  4        R V n        R # r   )r
  cancelr   r   s   &rU   rb  ClientResponse._cleanup_writer  s#    ==$MM  "rW   c                   < V ^8  d   QhRR/# r  rn   )rT   rl   s   "rU   rV   r     s       rW   c                    V P                   pV'       d#   VP                  4       f   \        V\        4       RV n        R # r  )r  	exceptionr7   _CONNECTION_CLOSED_EXCEPTIONr  )r   r  s   & rU   r  ClientResponse._notify_content  s.    ,,w((*2'#?@rW   c                   < V ^8  d   QhRR/# r  rn   )rT   rl   s   "rU   rV   r     s      d rW   c                @  "   V P                   e    V P                   G R j  xL
  V P                  4        R #  L  \        P                   dM    \        P                  R8  d5   \        P
                  ! 4       ;p'       d   TP                  4       '       d   h  Lti ; i5ir  )r
  r   r  r   r  r  r  ra  r  s   & rU   wait_for_closeClientResponse.wait_for_close  sx     ==$mm## 	 $)) $$/!(!5!5!777))r  c                    < V ^8  d   QhRS[ /# rO   r   )rT   rl   s   "rU   rV   r     s      E rW   c                ^  "   V P                   fv    V P                  P                  4       G Rj  xL
 V n         V P                   F<  pVP	                  V P
                  V P                  V P                   4      G Rj  xL
  K>  	  MV P                  '       d   \        R4      hV P                  ;'       d    V P                  P                  pVe   VP                  '       g   V P                  4       G Rj  xL
  V P                   #  L L  \         d    T P                  4        h i ; i L45i)zRead response payload.NrM   )_bodyr  r  r   send_response_chunk_receivedr}   r|   BaseExceptionr  r  r&   r`  r  r  r  )r   tracer  s   &  rU   r  ClientResponse.read  s     ::#'<<#4#4#66
!\\E<<TXXtzz   * ^^^'(;<<##AA(8(8(A(A8#4#4#4%%'''zz 7 ! 

 (s]   D-D DAD <D	=D D-D-6,D-#D-6D+7D-D 	D D((D-c                    < V ^8  d   QhRS[ /# rO   rR   )rT   rl   s   "rU   rV   r     s     7 7c 7rW   c                   V P                   P                  \        P                  R 4      P	                  4       p\
        P                  ! V4      pVP                  P                  R4      pV'       dS   \        P                  ! \        \        4      ;_uu_ 4        \        P                  ! V4      P                  uuRRR4       # VP                  R8X  d%   VP                   R8X  g   VP                   R8X  d   R# V P"                  f   \%        R4      hV P'                  W P"                  4      #   + '       g   i     Ly; i) charsetNapplicationjsonrdapr   z7Cannot compute fallback encoding of a not yet read body)r   r   r   CONTENT_TYPElowerr   parse_mimetyperi   
contextlibsuppressLookupErrorr   codecslookupnamerh   subtyper  RuntimeErrorr   )r   ctypemimetypeencodings   &   rU   get_encodingClientResponse.get_encoding  s      !2!2B7==?))%0&&**95$$[*==}}X.33 >= ==M)&(*:*:f*D ::I  $$T::66 >=s    D--D=	c                <   < V ^8  d   QhRS[ S[,          RS[RS[/# )rP   r  errorsrQ   rk   )rT   rl   s   "rU   rV   r     s'     : :8C= : :TW :rW   c                   "   V P                   f   V P                  4       G Rj  xL
  Vf   V P                  4       pV P                   P                  WR7      #  L45i)z!Read response payload and decode.N)r
  )r  r  r  rr  )r   r  r
  s   &&&rU   textClientResponse.text  sO     ::))+((*Hzz   99 s   "AA5Ar  loadscontent_typer   c                R   < V ^8  d   QhRS[ S[,          RS[RS[ S[,          RS[/# )rP   r  r  r  rQ   )r   rS   r@   r   )rT   rl   s   "rU   rV   r     s=     0 0 3-0 	0
 sm0 
0rW   c                 "   V P                   f   V P                  4       G Rj  xL
  V'       d   V P                  P                  \        P
                  R4      P                  4       p\        WC4      '       g@   \        V P                  V P                  V P                  RV,          V P                  R7      hV P                   P                  4       pV'       g   R# Vf   V P                  4       pV! VP                  V4      4      #  L5i)zRead and decodes JSON response.Nr  z3Attempt to decode JSON with unexpected mimetype: %sr  )r  r  r   r   r   r  r  r   r)   r   r  rt  stripr  rr  )r   r  r  r  r  strippeds   &$$$  rU   r  ClientResponse.json  s      ::))+LL$$T%6%6;AACE,UAA&%%LL;;MPUU LL  ::##%((*HX__X.//- s   "D
DD
B)D
.D
c                   < V ^8  d   QhRR/# )rP   rQ   rG   rn   )rT   rl   s   "rU   rV   r     s      "2 rW   c                   "   R V n         V # 5ir  )r  r   s   &rU   
__aenter__ClientResponse.__aenter__  s     s   
c                p   < V ^8  d   QhRS[ S[S[,          ,          RS[ S[,          RS[ S[,          RR/# )rP   exc_typeexc_valexc_tbrQ   N)r   r   r  r
   )rT   rl   s   "rU   rV   r     sG     $ $4./$ -($ '	$
 
$rW   c                p   "   R V n         V P                  4        V P                  4       G Rj  xL
  R#  L5i)FN)r  ra  r  )r   r  r  r  s   &&&&rU   	__aexit__ClientResponse.__aexit__  s,      ! 	!!###s   +646c                  < V ^8  d   Qh/ S[ S[,          ;R&   S[;R&   S[ S[,          ;R&   S[;R&   S[ S[,          ;R&   S[S[,          ;R&   S[R,          ;R	&   S[;R
&   S[ R,          ;R&   S[ S[	,          ;R&   S[ S[S[R3,          ,          ;R&   S[ R,          ;R&   S[ S[
P                  ,          ;R&   S[ R,          ;R&   S[RS[.S[3,          ;R&   S[ R,          ;R&   # )rP   r  rt  rp  r  r  r@  rG   .r  rE  rK   r`  r   r!  r   r   r  rJ   r   r   r  r
  r  )r   r:   r   rS   r>   r   r   r   rD   r   r   StackSummaryr   )rT   rl   s   "rU   rV   r     s0     k")    SM      E?!  s#*  )*/  #   ,'.! " |$+# $ "%S/29% & ./6' (  	 6 67>) * '.+ 8  0%8#=>S9 < +,3= rW   )__writerr  r   r_  r`  r   r   r@  r  r   r  r!  rE  r   r  r   r   r   r  r   r   r   r   r  r}   rp  rt  r  rn   r   )Nstrict)Brp   rq   rr   rs   r  rt  rp  r  r  r@  r  rE  r`  r   r!  r   r  r   r_  r  r  r   r
  r   r  r   r   setterr$  r5   r|   r6  r   r   r   rF  r   rU  r   rf  ry  r}  r  r  r  r  r  r  ra  r  r  r  r  rb  r  r  r  r  r  r?   r  r  r  rt   ru   rv   rw   s   @rU   rG   rG     s     &*GF F G!E&*H-/H#L*.K'+H5926I:>*.H GIKAS/3H%O %ON    ^^: :   ^^, ,           ! ! " " F F (0 ; ;  $       !% !%F/ /b# #  $ $  ! ! $V V# # 
   (7 7.: :0 #'0 2	0
 '90 0B $ $Y  rW   c            *         a  ] tR tRt o ]P
                  ]P                  ]P                  ]P                  0t	]P                  ]P                  ]P                  0t]	P                  ]4      P                  ]P                  04      t]P"                  R]P$                  ]! 4       /tRtRtRtRt]! 4       tRtRtRtRRRRRRRRR	RR
RR]P>                  RRRRRRRRRRRRRRRRRRRRRRRRRRRR/V 3R lR llt RbV 3R lR llt!V 3R  lR! lt"]#V 3R" lR# l4       t$]#V 3R$ lR% l4       t%]%PL                  V 3R& lR' l4       t%V 3R( lR) lt']#V 3R* lR+ l4       t(]#V 3R, lR- l4       t)]#V 3R. lR/ l4       t*]#V 3R0 lR1 l4       t+]#V 3R2 lR3 l4       t,],PL                  V 3R4 lR5 l4       t,]#V 3R6 lR7 l4       t-]#V 3R8 lR9 l4       t.V 3R: lR; lt/V 3R< lR= lt0V 3R> lR? lt1V 3R@ lRA lt2V 3RB lRC lt3V 3RD lRE lt4V 3RF lRG lt5RcV 3RH lRI llt6RdV 3RJ lRK llt7V 3RL lRM lt8V 3RN lRO lt9RcV 3RP lRQ llt:V 3RR lRS lt;RbV 3RT lRU llt<V 3RV lRW lt=V 3RX lRY lt>V 3RZ lR[ lt?V 3R\ lR] lt@V 3R^ lR_ ltAV 3R` ltBRatCV tDR# )erF   i  z*/*NGETrT  r   skip_auto_headersdatar$  authr  compresschunked	expect100Fr   response_classr   r   r   r   r   Tproxy_headersr   	trust_envserver_hostnamec          /        < V ^8  d   QhRS[ RS[RS[RS[S[,          RS[S[S[ ,          ,          RS[RS[S[,          RS[S[,          R	S[	P                  R
S[S[ S[R3,          RS[S[,          RS[RS[S[P                  ,          RS[S[R,          ,          RS[S[,          RS[S[,          RS[S[,          RS[R,          RS[S[S[S[3,          RS[S[,          RS[S[R,          ,          RS[RS[S[ ,          /# )rP   r}   r|   rT  r   r'  r(  r$  r)  r  r*  Nr+  r,  r   r-  rG   r   r   r   r   rJ   r   r.  r   rL   r/  r0  )rS   r   rC   r   rB   r   r   rA   r1   r   r:   r   r   r   r   r   r0   rE   rI   r   )rT   rl   s   "rU   rV   ClientRequest.__annotate__=  s    M8 M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8rW   c               *   Vf   \         P                  ! 4       p\        P                  V4      ;p'       d#   \	        RV: RVP                  4       : R24      h\        V4      \        J g   Q V4       hVe   \        V4      \        J g   Q V4       h\        '       d   Vf   Q hVV n	        V'       d   VP                  V4      pW n        VP                  '       d   VP                  R 4      MTV n        VP                  4       V n        Wn        Wn        Wn        R V n        Vf   \*        pMTpVV n        Ve   TM	\/        4       V n        Ve   TMRV n        VV n        VP7                  4       '       d0   \8        P:                  ! \<        P>                  ! ^4      4      V n         V PC                  V	4       V PE                  V4       V PG                  V4       V PI                  V4       V PK                  V4       V PM                  V4       V PO                  VV4       V PQ                  VVV4       V PS                  V4       Vf   V P                   V PT                  9  d   V PW                  4        V PY                  V4       Vf
   . V n-        R # TV n-        R # )Nz+Method cannot contain non-token characters z (found at least )T).r   get_event_loop_CONTAINS_CONTROL_CHAR_REsearchr   grouprh   r   r   r   extend_queryoriginal_urlr   r   r|   upperr}   r+  r*  r   lengthrG   r-  r3   r   _sslr0  r   r   r   r   r   r  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_continuer   )r   r}   r|   rT  r   r'  r(  r$  r)  r  r*  r+  r,  r   r-  r   r   r   r   r   r.  r   r/  r0  r   real_response_classs   &&&$$$$$$$$$$$$$$$$$$$$$  rU   r   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rW   c                $   < V ^8  d   QhRS[ RR/# r  r  )rT   rl   s   "rU   rV   r2    r  rW   c                    R V n         R # r   _ClientRequest__writerr  s   &&rU   r  ClientRequest.__reset_writer  r  rW   c                0   < V ^8  d   QhRS[ S[,          /# rO   r   r   )rT   rl   s   "rU   rV   r2    s      Xc] rW   c                    \         P                  V P                  9  d   R# V P                  \         P                  ,          p \        V4      #   \         d    \	        RT 24      Rhi ; i)zExtract and validate Content-Length header value.

Returns parsed Content-Length value or None if not set.
Raises ValueError if header exists but cannot be parsed as an integer.
NzInvalid Content-Length header: )r   CONTENT_LENGTHr   r   r   )r   content_length_hdrs   & rU   _get_content_length!ClientRequest._get_content_length  sj     dll2!\\$*=*=>	)** 	12D1EF	s   
A A*c                .   < V ^8  d   QhRS[ R,          /# r  )r   )rT   rl   s   "rU   rV   r2    s     8 8;t#4 8rW   c                >    V P                   ;'       g    \        4       # r   )_skip_auto_headersr   r   s   &rU   r'  ClientRequest.skip_auto_headers  s    &&77+-7rW   c                .   < V ^8  d   QhRS[ R,          /# r  r  )rT   rl   s   "rU   rV   r2    s      "67 rW   c                    V P                   # r   rN  r   s   &rU   r   ClientRequest._writer  rB  rW   c                "   < V ^8  d   QhRRRR/# r  rn   )rT   rl   s   "rU   rV   r2    s     6 62 6t 6rW   c                    V P                   e&   V P                   P                  V P                  4       Wn         VP                  V P                  4       R # r   )rO  r  _ClientRequest__reset_writerr  r  s   &&rU   r   r^    s=    ==$MM..t/B/BC  !4!45rW   c                    < V ^8  d   QhRS[ /# rO   r  )rT   rl   s   "rU   rV   r2    s     / / /rW   c                <    V P                   P                  \        9   # r   )r|   scheme_SSL_SCHEMESr   s   &rU   r   ClientRequest.is_ssl  s    xx,..rW   c                8   < V ^8  d   QhRS[ RS[S[3,          /# )rP   rQ   rE   )r   r   rI   )rT   rl   s   "rU   rV   r2    s       U<{:; rW   c                    V P                   # r   )r=  r   s   &rU   r   ClientRequest.ssl  r3  rW   c                    < V ^8  d   QhRS[ /# rO   )r   )rT   rl   s   "rU   rV   r2    s     
 
 
rW   c           
     h   V P                   ;p'       d$   \        \        VP                  4       4      4      pMR pV P                  p\        P                  \        VP                  ;'       g    RVP                  VP                  \        9   V P                  V P                  V P                  V34      # )Nr  )r.  hashr   itemsr|   r   r   raw_hostr   rd  re  r=  r   r   )r   r.  hr|   s   &   rU   connection_keyClientRequest.connection_key  s     ...=.#E-*=*=*?$@AAAhh}}""

l*		


 	
rW   c                    < V ^8  d   QhRS[ /# rO   rR   )rT   rl   s   "rU   rV   r2    s      c rW   c                >    V P                   P                  pVf   Q hV# r   )r|   rn  )r   rets   & rU   r   ClientRequest.host  s     hh
rW   c                0   < V ^8  d   QhRS[ S[,          /# rO   rR  )rT   rl   s   "rU   rV   r2    s      hsm rW   c                .    V P                   P                  # r   )r|   r   r   s   &rU   r   ClientRequest.port  s    xx}}rW   c                X   < V ^8  d   QhRS[ S[P                  S[R,          3,          /# )rP   rQ   rW   )r   r!   r   r   )rT   rl   s   "rU   rV   r2    s&     ! !eGOOWS\9: !rW   c                .    V P                   ;'       g    R# )zRequest body.rW   )r  r   s   &rU   bodyClientRequest.body  s     zz  S rW   c                $   < V ^8  d   QhRS[ RR/# )rP   r  rQ   NrY  )rT   rl   s   "rU   rV   r2    s     ! !# !$ !rW   c                    V P                   e2   \        V P                   ^R7       V P                   P                  4        V P                  V4       R# )a  Set request body with warning for non-autoclose payloads.

WARNING: This setter must be called from within an event loop and is not
thread-safe. Setting body outside of an event loop may raise RuntimeError
when closing file-based payloads.

DEPRECATED: Direct assignment to body is deprecated and will be removed
in a future version. Use await update_body() instead for proper resource
management.
Nr   )r  r   _close_update_body)r   r  s   &&rU   r{  r|    s>     ::! &djjQ?
 JJ% rW   c                    < V ^8  d   QhRS[ /# rO   rI  )rT   rl   s   "rU   rV   r2    s     
 
k 
rW   c                    \        V P                  4      p\        P                  \        V P
                  V P                  WP                  34      # r   )r   r   r   r   rH   r|   r}   r:  )r   r   s   & rU   r   ClientRequest.request_info  s=    )9$,,)G
 }}$((DKK:K:KL
 	
rW   c                   < V ^8  d   QhRR/# )rP   rQ   rJ   rn   )rT   rl   s   "rU   rV   r2    s       rW   c                    V P                   # )zReturn the ClientSession instance.

This property provides access to the ClientSession that initiated
this request, allowing middleware to make additional requests
using the same session.
)r   r   s   &rU   r   ClientRequest.session  s     }}rW   c                $   < V ^8  d   QhRS[ RR/# )rP   r|   rQ   Nr   )rT   rl   s   "rU   rV   r2    s     N Ns Nt NrW   c                   VP                   '       g   \        V4      hVP                  '       g   VP                  '       dG   \        P
                  ! VP                  ;'       g    RVP                  ;'       g    R4      V n        R# R# )z8Update destination host, port and connection type (ssl).r  N)	rn  r*   raw_userraw_passwordr   r1   userpasswordr)  )r   r|   s   &&rU   r?  ClientRequest.update_host  s\     |||S/! <<<3+++))#((..b#,,:L:L"MDI ,rW   c                N   < V ^8  d   QhRS[ S[P                  S[3,          RR/# )rP   r  rQ   N)r   r   r:   rS   )rT   rl   s   "rU   rV   r2    s+      eD,<,<c,A&B t rW   c                P   \        V\        4      '       dg   VP                  R^4       Uu. uF  q"P                  4       NK  	  pp \        P
                  ! \        V^ ,          4      \        V^,          4      4      pWn        R# u upi   \         d    \        RT 24      Rhi ; i)zTConvert request version to two elements tuple.

parser HTTP version '1.1' => (1, 1)
.z#Can not parse http version number: N)	r   rS   r  r  r   r:   r   r   r  )r   r  partvs   &&  rU   r>  ClientRequest.update_version  s    
 gs##*1--Q*?@*?$*?A@**3qt9c!A$i@
  A   9'Cs   B7B
 
B%c                4   < V ^8  d   QhRS[ S[,          RR/# )rP   r   rQ   N)r   rB   )rT   rl   s   "rU   rV   r2     s      - -h|&< - -rW   c                   \        4       V n        V P                  P                  pVf   Q hW P                  \        P
                  &   V'       g   R# \        V\        \        \        34      '       d   VP                  4       pV FE  w  r4V\        P                  9   d   W@P                  V&   K*  V P                  P                  W44       KG  	  R# )zUpdate request headers.N)r   r   r|   host_port_subcomponentr   HOSTr   dictr   r   rm  HOST_ALLr  )r   r   r   r  r  s   &&   rU   r@  ClientRequest.update_headers   s    )4 xx.. "&TYYgni@AAmmoG!JCdmm#$)S!  , "rW   c                D   < V ^8  d   QhRS[ S[S[,          ,          RR/# )rP   r'  rQ   N)r   r   rS   )rT   rl   s   "rU   rV   r2  9  s%     < <Xhsm5L <QU <rW   c                   VeW   \        R \        V4       4       4      V n        V P                  P	                  4       pVP                  V P                  4       MV P                  pV P                  P                  4        F  w  r4W29  g   K  W@P                  V&   K  	  \        P                  V9  d$   \        V P                  \        P                  &   R # R # )Nc              3   (   "   T F  qR 3x  K
  	  R # 5ir   rn   )r+  hdrs   & rU   r-  4ClientRequest.update_auto_headers.<locals>.<genexpr>;  s      2'@d'@s   )r   sortedrZ  r   copyextendDEFAULT_HEADERSrm  r   
USER_AGENTr9   )r   r'  used_headersr  r  s   &&   rU   rA  !ClientRequest.update_auto_headers9  s    (&1 2'-.?'@2 'D#  <<,,.L 7 78  <<L,,224HC&$'S! 5 ??,.,;DLL) /rW   c                4   < V ^8  d   QhRS[ S[,          RR/# r'  )r   rA   )rT   rl   s   "rU   rV   r2  L  s$     I Ih|&< I IrW   c                X   V'       g   R# \        4       p\        P                  V P                  9   d^   VP	                  \        V P                  P                  \        P                  R4      4      4       V P                  \        P                   \        V\        4      '       d   VP                  4       pMTpV F.  w  rE\        V\        4      '       d   \        V4      W$&   K*  WRV&   K0  	  VP                  RRR7      P                  4       V P                  \        P                  &   R# )zUpdate request cookies header.Nr  r  )headersep)r   r   COOKIEr   r"  r"   r   r   r   rm  r   r$   outputr  )r   r$  citer_cookiesr  r  s   &&    rU   rB  ClientRequest.update_cookiesL  s    N;;$,,&HH()9)9$++r)JKLT[[)gw''"==?L"L'KD%((:5A$ ( %&HHBCH$@$F$F$HT[[!rW   c                $   < V ^8  d   QhRS[ RR/# )rP   r(  rQ   NrY  )rT   rl   s   "rU   rV   r2  d  s        C  D  rW   c                   V'       g
   RV n         R# V P                  P                  \        P                  4      '       d    V P                   '       d   \        R4      hR# V P                   '       dX   \        V P                   \        4      '       g   RV n         V P                   V P                  \        P                  &   RV n        R# R# )zSet request content encoding.Nz9compress can not be set if Content-Encoding header is setrZ   T)	r*  r   r   r   CONTENT_ENCODINGr   r   rS   r+  )r   r(  s   &&rU   rC  %ClientRequest.update_content_encodingd  s     DM<<D1122}}} O   ]]]dmmS11 )26--DLL../DL	 rW   c                   < V ^8  d   QhRR/# r  rn   )rT   rl   s   "rU   rV   r2  v  s     = =$ =rW   c                x   V P                   P                  \        P                  R4      P	                  4       pRV9   d    V P
                  '       d   \        R4      hR# V P
                  '       dJ   \        P                  V P                   9   d   \        R4      hRV P                   \        P                  &   R# R# )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)r   r   r   TRANSFER_ENCODINGr  r+  r   rT  )r   tes   & rU   rH  &ClientRequest.update_transfer_encodingv  s    \\d44b9??A?||| D   \\\""dll2 L  4=DLL//0 rW   c                :   < V ^8  d   QhRS[ S[,          RS[RR/# )rP   r)  r/  rQ   N)r   r1   r   )rT   rl   s   "rU   rV   r2    s(     
9 
9 3 
9 
9QU 
9rW   c                    Vf   V P                   pVf   R# \        V\        P                  4      '       g   \	        R4      hVP                  4       V P                  \        P                  &   R# )zSet basic auth.Nz%BasicAuth() tuple is required instead)	r)  r   r   r1   r   rq  r   r   AUTHORIZATION)r   r)  r/  s   &&&rU   rD  ClientRequest.update_auth  sQ    <99D<$ 1 122CDD+/;;=T''(rW   c                *   < V ^8  d   QhRS[ RS[RR/# )rP   r{  _stacklevelrQ   N)r   r   )rT   rl   s   "rU   rV   r2    s"     '! '!# '!C '! '!rW   c                   V P                   e   \        V P                   VR7       Vfs   RV n         V P                  V P                  9  dO   V P                  '       g=   \
        P                  V P                  9  d   RV P                  \
        P                  &   R# \        V\        4      '       d   V! 4       MTp \        P                  P                  VRR7      pW@n         V P                  '       g^   \
        P                  V P                  9  d?   VP                  ;pe(   \        V4      V P                  \
        P                  &   MRV n        VP                  '       g   Q hV P                  pV P                   pVP                  P#                  4        F  w  rW9   g   Ve	   W9   d   K  WV&   K  	  R#   \        P                   d    \        T4      ! 4       p ELi ; i)zUpdate request body from data.Nr   0)dispositionT)r  r   r}   rG  r+  r   rT  r   r   r.   r!   PAYLOAD_REGISTRYr   r  sizerS   rZ  rm  )
r   r{  r  maybe_payloadbody_payloadr  r   skip_headersr  r  s
   &&&       rU   rF  #ClientRequest.update_body_from_data  su   ::!%djj[I<DJ 4#3#33''t||;47T001 #-T8"<"<$	5"3377SW7XL "
||| 3 34<< G$)))647IT001# #####,,..&..446JC~,":s?R CL 7 "" 	5#M24L	5s   <!F9 9%G"!G"c                $   < V ^8  d   QhRS[ RR/# rP   r{  rQ   NrY  )rT   rl   s   "rU   rV   r2    s     , , , ,rW   c                   \         P                  V P                  9   d   V P                  \         P                   V P                  '       d;   \         P                  V P                  9   d   V P                  \         P                   V P                  V^R7       Vf   V P                  V P                  9  d   V P                  4        R# R# )z/Update request body after its already been set.)r  N)	r   rT  r   r+  r  rF  r}   rG  rH  r   r{  s   &&rU   r  ClientRequest._update_body  s     $,,.T001 <<<D22dllBT334 	""4Q"7 t{{$2B2BB))+  CrW   c                $   < V ^8  d   QhRS[ RR/# r  rY  )rT   rl   s   "rU   rV   r2    s     <  < c < d < rW   c                   "   V P                   e#   V P                   P                  4       G Rj  xL
  V P                  V4       R#  L5i)a  
Update request body and close previous payload if needed.

This method safely updates the request body by first closing any existing
payload to prevent resource leaks, then setting the new body.

IMPORTANT: Always use this method instead of setting request.body directly.
Direct assignment to request.body will leak resources if the previous body
contains file handles, streams, or other resources that need cleanup.

Args:
    body: The new body content. Can be:
        - bytes/bytearray: Raw binary data
        - str: Text data (will be encoded using charset from Content-Type)
        - FormData: Form data that will be encoded as multipart/form-data
        - Payload: A pre-configured payload object
        - AsyncIterable: An async iterable of bytes chunks
        - File-like object: Will be read and sent as binary data
        - None: Clears the body

Usage:
    # CORRECT: Use update_body
    await request.update_body(b"new request data")

    # WRONG: Don't set body directly
    # request.body = b"new request data"  # This will leak resources!

    # Update with form data
    form_data = FormData()
    form_data.add_field('field', 'value')
    await request.update_body(form_data)

    # Clear body
    await request.update_body(None)

Note:
    This method is async because it may need to close file handles or
    other resources associated with the previous payload. Always await
    this method to ensure proper cleanup.

Warning:
    Setting request.body directly is highly discouraged and can lead to:
    - Resource leaks (unclosed file handles, streams)
    - Memory leaks (unreleased buffers)
    - Unexpected behavior with streaming payloads

    It is not recommended to change the payload type in middleware. If the
    body was already set (e.g., as bytes), it's best to keep the same type
    rather than converting it (e.g., to str) as this may result in unexpected
    behavior.

See Also:
    - update_body_from_data: Synchronous body update without cleanup
    - body property: Direct body access (STRONGLY DISCOURAGED)

N)r  r  r  r  s   &&rU   update_bodyClientRequest.update_body  s;     t ::!**""$$$$ %s   ,AAAc                $   < V ^8  d   QhRS[ RR/# )rP   expectrQ   Nr  )rT   rl   s   "rU   rV   r2    s     
7 
7T 
7d 
7rW   c                N   V'       d   R V P                   \        P                  &   MU\        P                  V P                   9   d7   V P                   \        P                  ,          P                  4       R 8X  d   RpV'       d"   V P                  P                  4       V n        R# R# )z100-continueTN)r   r   EXPECTr  r   create_futurer   )r   r  s   &&rU   rI  $ClientRequest.update_expect_continue  sf    (6DLL%KK4<<'T[[)//1^CF!YY446DN rW   c                `   < V ^8  d   QhRS[ S[,          RS[ S[,          RS[ S[,          RR/# )rP   r   r   r.  rQ   N)r   r   r1   rB   )rT   rl   s   "rU   rV   r2    sA     + +}+ Y'+  -	+
 
+rW   c                   Wn         Vf   R V n        R V n        R # V'       d,   \        V\        P
                  4      '       g   \        R4      hW n        Ve(   \        V\        \        34      '       g   \        V4      pW0n        R # )Nz,proxy_auth must be None or BasicAuth() tuple)
r   r   r.  r   r   r1   r   r   r   r   )r   r   r   r.  s   &&&&rU   rE  ClientRequest.update_proxy  st     
="DO!%DjW5F5FGGKLL$$ZI~6.
 .
 (6M*rW   c                >   < V ^8  d   QhRS[ RRRS[S[,          RR/# )rP   r   connrK   content_lengthrQ   N)r%   r   r   )rT   rl   s   "rU   rV   r2  0  s=     P% P%$P% P% !	P%
 
P%rW   c           
     H  "   V P                   e=   VP                  4        VP                  4       G Rj  xL
  V P                   G Rj  xL
  VP                  pVf   Q h V P                  e$   V P                  P                  W4      G Rj  xL
  VP                  4       G Rj  xL
  VP                  4        R#  L Lt L2 L  \         d{   pTpTP                  RJ;'       g     \        T\        P                  4      '       * pT'       d%   \        TP                  RT P                  : 24      p\        YFT4        Rp?R# Rp?i\        P                    d    TP#                  4        h \$         d*   p\        T\'        RT: RT: 24      T4        Rp?R# Rp?ii ; i5i)a  
Write the request body to the connection stream.

This method handles writing different types of request bodies:
1. Payload objects (using their specialized write_with_length method)
2. Bytes/bytearray objects
3. Iterable body content

Args:
    writer: The stream writer to write the body to
    conn: The connection being used for this request
    content_length: Optional maximum number of bytes to write from the body
                    (None means write the entire body)

The method properly handles:
- Waiting for 100-Continue responses if required
- Content length constraints for chunked encoding
- Error handling for network issues, cancellation, and other exceptions
- Signaling EOF and timeout management

Raises:
    ClientOSError: When there's an OS-level error writing the body
    ClientConnectionError: When there's a general connection error
    asyncio.CancelledError: When the operation is cancelled

NzCan not write request body for z4Failed to send bytes into the underlying connection z: )r   send_headersdrainr  r  write_with_length	write_eofstart_timeoutOSErrorerrnor   r   TimeoutErrorr'   r|   r7   r  r  	Exceptionr&   )r   r   r  r  r  underlying_excreraised_excexc_is_not_timeouts   &&&&    rU   write_bytesClientRequest.write_bytes0  s    B >>%!,,.  ..  ==###'	% zz%jj226JJJ< ""$$$""$Y !  K< %;  	B)L "0!5!5T!A " " 4 4J F ","((5dhh]C 
 (.AA%% 	JJL 	%Jir.!35  	s   2F"B;F"B=	F" ,C B?C F"$C%F"=F"?C F"F>E0E=F"FF5F6FF"FF"c                "   < V ^8  d   QhRRRR/# )rP   r  rK   rQ   rG   rn   )rT   rl   s   "rU   rV   r2    s      a a| a0@ arW   c                	  "   V P                   \        P                  8X  d9   V P                  P                  pVf   Q hV RV P                  P
                   2pMTV P                  '       d-   V P                  4       '       g   \        V P                  4      pMV P                  P                  pVP                  pVf   Q h\        TV P                  V P                  '       d7   \        P                  ! V P                   V P                   V P                  4      MR V P                  '       d7   \        P                  ! V P"                  V P                   V P                  4      MR R7      pV P$                  '       d   VP'                  V P$                  4       V P(                  e   VP+                  4        V P                   V P,                  9   dj   V P.                  e    \        P0                  V P.                  9  d=   \        P0                  V P2                  9  d   RV P2                  \        P0                  &   V P4                  p\        P6                  V P2                  9  dn   VP8                  P:                  '       d*   V\<        8X  d   RV P2                  \        P6                  &   M(V\>        8X  d   RV P2                  \        P6                  &   V P                    RV RVP@                   RVPB                   2pVPE                  WpP2                  4      G R j  xL
  V PF                  '       g!   V PH                  f   VPJ                  '       d   V PM                  WQV PO                  4       4      p\P        PR                  R8  d$   \T        PV                  ! WP                  R	R
7      p	MV P                  PY                  V4      p	V	P[                  4       '       d   R p	M)Wn.        M"VP_                  4        VPa                  4        R p	V Pb                  p
V
f   Q hV
! V P                   V Pd                  V	V PH                  V Pf                  V Ph                  V P                  V P                  V Pj                  R7	      V n6        V Pl                  #  ELp5i)N:)on_chunk_senton_headers_sentzapplication/octet-streamr  z
keep-alive z HTTP/r  T)r   eager_start)r   r   r   r   r   r   r   )r     )7r}   r   METH_CONNECTr|   host_subcomponentr   r   r   rS   raw_path_qsr  r=   r   r   	functoolspartial_on_chunk_request_sent_on_headers_request_sentr*  enable_compressionr+  enable_chunkingPOST_METHODSrZ  r  r   r  
CONNECTION
_connectorforce_closer<   r;   majorminorwrite_headersr  r   writing_pausedr  rV  r   r  r   Taskcreate_taskr  r   r  set_eofr-  r:  r   r   r   response)r   r  connect_hostpathr  r   r  status_linecoror  r-  s   &&         rU   sendClientRequest.send  sK    
 ;;$+++8855L+++"^1TXX]]O4DZZZ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 "";=== :::3x7N7N7N##F$2J2J2LMD7* ||DyydKyy,,T2yy{{# ""$NND,,)))&KK++**<<MM

 }}K 	>sH   A)R,RB)R,AR;DR?BRR	R0RBRB1Rc                   < V ^8  d   QhRR/# r  rn   )rT   rl   s   "rU   rV   r2    s     
 
T 
rW   c                2  "   V P                   e    V P                   G R j  xL
  R # R #  L  \        P                   dT    \        P                  R8  d;   \        P
                  ! 4       ;p'       d   TP                  4       '       d   h  R #  R #  R # i ; i5ir  )rO  r   r  r   r  r  r  r  s   & rU   r  ClientRequest.close  s~     ==$mm## %#)) $$/!(!5!5!777)) * 8 0s>   B, *, B, AB3B	B
	BBBc                   < V ^8  d   QhRR/# r  rn   )rT   rl   s   "rU   rV   r2    s     ! !4 !rW   c                    V P                   ei   V P                  P                  4       '       g   V P                   P                  4        V P                   P	                  V P
                  4       R V n         R # R # r   )rO  r   r  r  r  ra  r   s   &rU   	terminateClientRequest.terminate  sS    ==$99&&(($$&MM..t/B/BC DM	 %rW   c                0   < V ^8  d   QhRS[ RS[RS[RR/# )rP   r}   r|   chunkrQ   N)rS   r   r   )rT   rl   s   "rU   rV   r2    s0     D D3 DS D DSW DrW   c                l   "   V P                    F  pVP                  WV4      G R j  xL
  K  	  R #  L
5ir   )r   send_request_chunk_sent)r   r}   r|   r  r  s   &&&& rU   r  $ClientRequest._on_chunk_request_sent  s,     \\E//UCCC "C   %424c                .   < V ^8  d   QhRS[ RS[RRRR/# )rP   r}   r|   r   zCIMultiDict[str]rQ   N)rS   r   )rT   rl   s   "rU   rV   r2    s3     C CC #C.@C	CrW   c                l   "   V P                    F  pVP                  WV4      G R j  xL
  K  	  R #  L
5ir   )r   send_request_headers)r   r}   r|   r   r  s   &&&& rU   r  &ClientRequest._on_headers_request_sent  s.      \\E,,V'BBB "Br  c                   < V ^8  d   Qh/ S[ RS[P                  3,          ;R&   S[R,          ;R&   S[R,          ;R&   # )rP   Nr  r  rO  zCIMultiDict[None]rZ  )r   r!   r   r   )rT   rl   s   "rU   rV   r2    sF       w&'.! ( +,3) : !!45<; rW   )r"  r  r   r   rZ  r  r=  r   r   r   r)  r+  r*  r   r<  r   r}   r:  r   r   r.  r  r-  r0  r|   r  r   )F)r  )Erp   rq   rr   rs   r   METH_GET	METH_HEADMETH_OPTIONS
METH_TRACErG  
METH_PATCH	METH_POSTMETH_PUTr  unionMETH_DELETEALL_METHODSACCEPTACCEPT_ENCODINGra   r  r  r)  r  rO  r   r|   r}   r   rZ  r   r<   r   ra  rV  r   r'  r   r$  r   r   rp  r   r   r{  r   r   r?  r>  r@  rA  rB  rC  rH  rD  rF  r  r  rI  rE  r  r  r  r  r  r  rt   ru   rv   rw   s   @rU   rF   rF     s    	K OOT^^T]]CL##L1779I9I8JKK 	U:<O +/EDH/3H %CFI8<M8
 M8 +/M8 6:M8 M8 +/M8 %)M8 %)$6$6M8 ,0M8 #'M8  M8 59M8  <@!M8"  $#M8$ +/%M8& -1'M8( .2)M8* 59+M8, 15-M8. +//M80  1M82 *.3M8 M8^  " 8 8   ^^6 6/ /   
 
&  
   ! !
 
[[! !. 
 
  N N - -2< <&I I0   $= =&
9 
9'! '!R, ,$<  < |
7 
7+ +,P% P%da aF
 
! !D DC CG  rW   )rF   rG   rH   rI   )httpswss)rP   )zr   r  r  r  rn  r  r   r   r   collections.abcr   hashlibr   r   r   http.cookiesr   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!   _cookie_helpersr"   r#   r$   abcr%   client_exceptionsr&   r'   r(   r)   r*   r+   compression_utilsr,   r-   formdatar.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   streamsr>   typedefsr?   r@   rA   rB   rC   rD   r   rE   ImportErrorr  __all__clientrJ   	connectorrK   tracingrL   r  compiler6  r   ra   srf   rz   rH   rI   r   rh   r   r   	frozensetre  r   r   r   rG   rF   rn   rW   rU   <module>rF     s       	 	 
   # % % - 1     N N  5 5 
 &  4     "  " L %%  55HI JJ'EF 
**9
:	  T$d3  4: 
, 
$P P@ ?{DJGtDz*4n )*	&J 	&:
&w$\ w$tgC gCG  
s   
H   HH