
    h                       S SK Jr  S SKrS SKrS SKrS SKrS SKrS SK	r	S SK
rS SKJr  S SKJrJr  SSKJrJrJrJr  SSKJrJrJrJrJrJrJrJr  SSKJ r J!r!J"r"J#r#J$r$J%r%J&r&  SS	K'J(r(  SS
K)J*r*  SSK+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6  SSK7J8r8  SSK9J:r:J;r;  / SQr<SS1r=SS jr>S S!S jjr?S S"S jjr@S#S jrAS$S jrB    S%S jrC " S S\	R                  \E\E4   5      rF " S S5      rG " S S5      rH " S S\	R                  \E\E4   5      rIg)&    )annotationsN)Mapping)Cookie	CookieJar   )
ByteStreamUnattachedStreamencode_requestencode_response)SUPPORTED_DECODERSByteChunkerContentDecoderIdentityDecoderLineDecoderMultiDecoderTextChunkerTextDecoder)CookieConflictHTTPStatusErrorRequestNotReadResponseNotReadStreamClosedStreamConsumedrequest_context)(get_multipart_boundary_from_content_type)codes)AsyncByteStreamCookieTypesHeaderTypesQueryParamTypesRequestContentRequestDataRequestExtensionsRequestFilesResponseContentResponseExtensionsSyncByteStream)URL)to_bytes_or_strto_str)CookiesHeadersRequestResponseauthorizationzproxy-authorizationc                R     [         R                  " U 5        g! [         a     gf = f)z/
Return `True` if `encoding` is a known codec.
FT)codecslookupLookupErrorencodings    ?/var/www/html/env/lib/python3.13/site-packages/httpx/_models.py_is_known_encodingr7   8   s,    h   s    
&&c                d    [        U [        5      (       a  U $ U R                  U=(       d    S5      $ )z=
Coerce str/bytes into a strictly byte-wise HTTP header key.
ascii)
isinstancebytesencode)keyr5   s     r6   _normalize_header_keyr>   C   s)     S%((3Mcjj9LW.MM    c                    [        U [        5      (       a  U $ [        U [        5      (       d  [        S[	        U 5       35      eU R                  U=(       d    S5      $ )z?
Coerce str/bytes into a strictly byte-wise HTTP header value.
z'Header value must be str or bytes, not r9   )r:   r;   str	TypeErrortyper<   )valuer5   s     r6   _normalize_header_valuerE   J   sN     %eS!!A$u+OPP<<+G,,r?   c                d    [         R                  R                  5       nXS'   UR                  S S9$ )Ncontent-type)failobj)emailmessageMessageget_content_charset)content_typemsgs     r6   _parse_content_type_charsetrO   U   s2     --


!C&""4"00r?   c                   / nSnU R                  U5      n U (       d  U$ [        R                  " SU 5       H  n UR                  SS5      u  pESUR                  S5      0nUR                  S5       H9  n UR                  S5      u  pU R                  U5      XhR                  U5      '   M;     UR	                  U5        M     U$ ! [         a    USpT Nf = f! [         a       M8  f = f)	a  
Returns a list of parsed link headers, for more info see:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Link
The generic syntax of those is:
Link: < uri-reference >; param1=value1; param2="value2"
So for instance:
Link; '<http:/.../front.jpeg>; type="image/jpeg",<http://.../back.jpeg>;'
would return
    [
        {"url": "http:/.../front.jpeg", "type": "image/jpeg"},
        {"url": "http://.../back.jpeg"},
    ]
:param value: HTTP Link entity-header field
:return: list of parsed link headers
z '"z, *<;r    urlz<> '"=)stripresplit
ValueErrorappend)	rD   linksreplace_charsvalrS   paramslinkparamr=   s	            r6   _parse_header_linksr`   ]   s      #%EMKK&Exx&	"))C+KC syy*+\\#&E"[[-
 .3[[-GD=)* ' 	T ' L  	"r	"  s#   C6CCC
C('C(c              #     #    U  H5  u  p[        UR                  5       5      [        ;   a
  [        SUS9nX4v   M7     g 7f)Nz[secure])match_type_of)r*   lowerSENSITIVE_HEADERSr)   )itemskvs      r6   _obfuscate_sensitive_headersrh      s:      !'') 11
!<Ad
 s   =?c                  0   \ rS rSrSr  S     SS jjr\SS j5       r\R                  SS j5       r\SS j5       r	SS jr
SS	 jrS S
 jrS!S jrS"S#S jjrS$S%S jjrS"S&S jjrS'S jrS(S jrS)S jrS*S jrS+S jrS,S jrS-S jrS.S jrSS jrSrg)/r,      z1
HTTP headers, as a case-insensitive multi-dict.
Nc                   / U l         [        U[        5      (       a  [        UR                   5      U l         O[        U[        5      (       a[  UR                  5        HF  u  p4[        X25      n[        XB5      nU R                   R                  XUR                  5       U45        MH     OOUbL  U HF  u  p4[        X25      n[        XB5      nU R                   R                  XUR                  5       U45        MH     X l
        g N)_listr:   r,   listr   re   r>   rE   rY   rc   	_encoding)selfheadersr5   rf   rg   	bytes_keybytes_values          r6   __init__Headers.__init__   s    
 
gw''gmm,DJ))1!>	5aB

!!9oo.?"MN (  1!>	5aB

!!9oo.?"MN  
 "r?   c                
   U R                   cY  S HL  nU R                   H(  u  p# UR                  U5        UR                  U5        M*     Xl           U R                   $    SU l         U R                   $ ! [         a       Mq  f = f)zV
Header encoding is mandated as ascii, but we allow fallbacks to utf-8
or iso-8859-1.
)r9   utf-8z
iso-8859-1)ro   rawdecodeUnicodeDecodeError)rp   r5   r=   rD   s       r6   r5   Headers.encoding   s     >>!."&((JC

8,X. #+ &.N
 ~~! / ".~~ . s   "A33
BBc                    Xl         g rl   )ro   rp   rD   s     r6   r5   r{      s    r?   c                Z    U R                    VVVs/ s H	  u  po1U4PM     snnn$ s  snnnf )z8
Returns a list of the raw header items, as byte pairs.
)rm   )rp   raw_key_rD   s       r6   rx   Headers.raw   s(    
 ;?**E*%6W% *EEEs   &c                    U R                    VVVs0 s H!  u  po2R                  U R                  5      S _M#     snnnR                  5       $ s  snnnf rl   )rm   ry   r5   keysrp   r   r=   rD   s       r6   r   Headers.keys   s;    EIZZPZMAE

4==)4/ZPUUWWPs   (Ac                    0 nU R                    HV  u  p#nUR                  U R                  5      nUR                  U R                  5      nXQ;   a  X==   SU 3-  ss'   MR  XaU'   MX     UR                  5       $ )N, )rm   ry   r5   valuesrp   values_dictr   r=   rD   str_key	str_values          r6   r   Headers.values   sq    &(!ZZMAEjj/GT]]3I%$"YK(88$'0G$ ( !!##r?   c                    0 nU R                    HV  u  p#nUR                  U R                  5      nUR                  U R                  5      nXQ;   a  X==   SU 3-  ss'   MR  XaU'   MX     UR                  5       $ )z
Return `(key, value)` items of headers. Concatenate headers
into a single comma separated value when a key occurs multiple times.
r   )rm   ry   r5   re   r   s          r6   re   Headers.items   ss    
 ')!ZZMAEjj/GT]]3I%$"YK(88$'0G$ (   ""r?   c           	         U R                    VVVs/ s H<  u  pnUR                  U R                  5      UR                  U R                  5      4PM>     snnn$ s  snnnf )z
Return a list of `(key, value)` pairs of headers. Allow multiple
occurrences of the same key without concatenating into a single
comma separated value.
)rm   ry   r5   r   s       r6   multi_itemsHeaders.multi_items   sP     "&
!+ ZZ&T]](CD!+
 	
 
s   AAc                0     X   $ ! [          a    Us $ f = f)zp
Return a header value. If multiple occurrences of the header occur
then concatenate them together with commas.
)KeyError)rp   r=   defaults      r6   getHeaders.get   s#    
	9 	N	s    c                   UR                  5       R                  U R                  5      nU R                   VVVs/ s H7  u  pEnUR                  5       U:X  d  M  UR	                  U R                  5      PM9     nnnnU(       d  U$ / nU HA  n	UR                  U	R                  S5       V
s/ s H  oR                  5       PM     sn
5        MC     U$ s  snnnf s  sn
f )z
Return a list of all header values for a given key.
If `split_commas=True` is passed, then any comma separated header
values are split into multiple return strings.
,)rc   r<   r5   rm   ry   extendrW   rU   )rp   r=   split_commasget_header_keyr   item_key
item_valuer   split_valuesrD   items              r6   get_listHeaders.get_list   s     ++DMM: ,0::
+5'Z~~>1 -Jdmm,+5 	 
 ME%++c:J K:J$:J KL 
 !Ls   CC*C
c                    [        U5      nUR                  5        H  nX ;   d  M
  U R                  U5        M     U R                  R	                  UR                  5        g rl   )r,   r   poprm   r   )rp   rq   r=   s      r6   updateHeaders.update  sD    '"<<>C{ " 	

'--(r?   c                (    [        X R                  S9$ )Nr4   )r,   r5   rp   s    r6   copyHeaders.copy  s    tmm44r?   c                .   UR                  5       R                  U R                  5      nU R                   VVVs/ s H(  u  p4nXB:X  d  M  UR	                  U R                  5      PM*     nnnnU(       a  SR                  U5      $ [        U5      es  snnnf )z
Return a single header value.

If there are multiple headers with the same key, then we concatenate
them with commas. See: https://tools.ietf.org/html/rfc7230#section-3.2.2
r   )rc   r<   r5   rm   ry   joinr   )rp   r=   normalized_keyr   
header_keyheader_valuere   s          r6   __getitem__Headers.__getitem__  s     ++DMM: 04zz
/9+|+ /L./9 	 
 99U##sm
s   B
Bc                   UR                  U R                  =(       d    S5      nUR                  U R                  =(       d    S5      nUR                  5       n[        U R                  5       VVVs/ s H  u  nu  pxnX:X  d  M  UPM     n	nnn[        U	SS 5       H  nU R                  U	 M     U	(       a  U	S   nX5U4U R                  U'   gU R                  R                  X5U45        gs  snnnf )z[
Set the header `key` to `value`, removing any duplicate entries.
Retains insertion order.
rw   r   Nr   )r<   ro   rc   	enumeraterm   reversedrY   )
rp   r=   rD   set_key	set_value
lookup_keyidxr   r   found_indexess
             r6   __setitem__Headers.__setitem__0  s    
 **T^^6w7LL!:7;	]]_
 *34::)>
)>%%a1% )> 	 
 M!"-.C

3 / "C&I>DJJsOJJwI>?
s   2C-C-c                P   UR                  5       R                  U R                  5      n[        U R                  5       VVVs/ s H!  u  nu  pEnUR                  5       U:X  d  M  UPM#     nnnnU(       d  [        U5      e[        U5       H  nU R                  U	 M     gs  snnnf )z
Remove the header `key`.
N)rc   r<   r5   r   rm   r   r   )rp   r=   del_keyr   r   r   pop_indexess          r6   __delitem__Headers.__delitem__H  s     ))+$$T]]3 *34::)>
)>%%a1~~7* )> 	 
 3-K(C

3 )
s   B!%B!c                    UR                  5       R                  U R                  5      nX R                   VVs/ s H  u  p1o1PM	     snn;   $ s  snnf rl   )rc   r<   r5   rm   )rp   r=   r   r   s       r6   __contains__Headers.__contains__Z  s?    YY[''6
::>:iaac:>>>>s   Ac                4    [        U R                  5       5      $ rl   )iterr   r   s    r6   __iter__Headers.__iter__^  s    DIIK  r?   c                ,    [        U R                  5      $ rl   )lenrm   r   s    r6   __len__Headers.__len__a  s    4::r?   c                    [        U5      nU R                   VVVs/ s H	  u  p4oTU4PM     nnnnUR                   VVVs/ s H	  u  p4oTU4PM     nnnn[        U5      [        U5      :H  $ ! [         a     gf = fs  snnnf s  snnnf )NF)r,   rX   rm   sorted)rp   otherother_headersr   r=   rD   	self_list
other_lists           r6   __eq__Headers.__eq__d  s    	#ENM 8<zzBzmae5\z	B8E8K8KL8K}quEl8K
Li F:$666  		 CLs   A, A<B,
A98A9c                4   U R                   R                  nSnU R                  S:w  a  SU R                  < 3n[        [	        U R                  5       5      5      n[        U5      n[        U5      [        U5      :H  nU(       a  U SU< U S3$ U SU< U S3$ )NrR   r9   z, encoding=())	__class____name__r5   rn   rh   r   dictr   )rp   
class_nameencoding_stras_listas_dictno_duplicate_keyss         r6   __repr__Headers.__repr__n  s    ^^,,
==G#((9:L3D4D4D4FGHw-LCL8 \7+l^1==Qwk,q99r?   )ro   rm   NN)rq   HeaderTypes | Noner5   
str | NonereturnNoner   rA   rD   rA   r   r   )r   zlist[tuple[bytes, bytes]])r   ztyping.KeysView[str])r   ztyping.ValuesView[str])r   ztyping.ItemsView[str, str])r   zlist[tuple[str, str]]rl   )r=   rA   r   
typing.Anyr   r   )F)r=   rA   r   boolr   z	list[str])rq   r   r   r   )r   r,   )r=   rA   r   rA   r=   rA   rD   rA   r   r   )r=   rA   r   r   )r=   r   r   r   )r   ztyping.Iterator[typing.Any]r   int)r   r   r   r   )r   
__module____qualname____firstlineno____doc__rt   propertyr5   setterrx   r   r   re   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__ r?   r6   r,   r,      s     '+#"#" " 
	",  0 __  F FX	$#	
,)5(@0 $?!7:r?   r,   c            
          \ rS rSrSSSSSSSSSS.	                       SS jjrSS jr\SS j5       rSS jrSS jr	SS	 jr
SS
 jrSS jrSrg)r-   i~  N)	r]   rq   cookiescontentdatafilesjsonstream
extensionsc       	        :   UR                  5       U l        Uc  [        U5      O[        X#S9U l        [	        U5      U l        Uc  0 O
[        U5      U l        U(       a  [        U5      R                  U 5        U
c  U R
                  R                  S5      n[        UUUU	[        U(       a%  UR                  U R
                  R                  5      OS S9S9u  pJU R                  U5        Xl        [#        U
[$        5      (       a  U R'                  5         g g Xl        g )N)r]   rG   )rM   )r   r   r   r   boundary)uppermethodr(   rS   r,   rq   r   r   r+   set_cookie_headerr   r
   r   r<   r5   _preparer   r:   r   read)rp   r   rS   r]   rq   r   r   r   r   r   r   r   rM   s                r6   rt   Request.__init__  s     lln%~3s83s3Jw' * 2"Z8HG..t4>'+||'7'7'GL,A# ".!4!4T\\5J5J!K
OG MM'" K&*--		 ." !Kr?   c                R   UR                  5        HF  u  p#UR                  5       S:X  a  SU R                  ;   a  M+  U R                  R                  X#5        MH     / nSU R                  ;   nSU R                  ;   =(       d    SU R                  ;   nU(       dB  U R                  R
                  (       a'  UR                  SU R                  R                  45        U(       d!  U R                  S;   a  UR                  S5        [        X@R                  R                  -   5      U l        g )Ntransfer-encodingzContent-LengthHostzTransfer-Encodings   Host)POSTPUTPATCH)s   Content-Length   0)re   rc   rq   
setdefaultrS   hostrY   netlocr   r,   rx   )rp   default_headersr=   rD   auto_headershas_hosthas_content_lengths          r6   r  Request._prepare  s    )//1JCyy{116F$,,6VLL##C/	 2 35T\\),S0Ct||0S 	 DHHMM$((// :;!dkk5M&M 9:|ll.>.>>?r?   c                P    [        U S5      (       d
  [        5       eU R                  $ N_content)hasattrr   r  r   s    r6   r   Request.content  s"    tZ(( ""}}r?   c                D   [        U S5      (       d  [        U R                  [        R                  5      (       d   eSR                  U R                  5      U l        [        U R                  [        5      (       d  [        U R                  5      U l        U R                  $ )&
Read and return the request content.
r  r?   )r  r:   r   typingIterabler   r  r   r   s    r6   r  Request.read  sm     tZ((dkk6??;;;;HHT[[1DMdkk:66 )7}}r?   c                  #    [        U S5      (       dR  [        U R                  [        R                  5      (       d   eSR                  U R                   Vs/ s Sh  vN oPM  U R                  $  N
 Os  snf sn5      U l        [        U R                  [        5      (       a  MB  [        U R                  5      U l        N]7f)r  r  r?   N)r  r:   r   r  AsyncIterabler   r  r   rp   parts     r6   areadRequest.aread  s      tZ((dkk6+?+?@@@@HHT[[%I%ITd }} &J%IJDMdkk:66 )7sB   ACA6A4
A2A4
"A6&C2A4
4A651C(Cc                    U R                   R                  n[        U R                  5      nSU SU R                  < SU< S3$ )N<r   r   z)>)r   r   rA   rS   r   )rp   r   rS   s      r6   r   Request.__repr__  s=    ^^,,
$((m:,abr::r?   c                |    U R                   R                  5        VVs0 s H  u  pUS;  d  M  X_M     snn$ s  snnf )N)r   r   __dict__re   rp   namerD   s      r6   __getstate__Request.__getstate__  sE      $}}224
433 DK4
 	
 
   88c                z    UR                  5        H  u  p#[        XU5        M     0 U l        [        5       U l        g rl   )re   setattrr   r	   r   rp   stater+  rD   s       r6   __setstate__Request.__setstate__  s/     ;;=KDD& )&(r?   )r  r   rq   r   r   rS   )r   rA   rS   z	URL | strr]   zQueryParamTypes | Nonerq   r   r   CookieTypes | Noner   zRequestContent | Noner   zRequestData | Noner   zRequestFiles | Noner   ztyping.Any | Noner   'SyncByteStream | AsyncByteStream | Noner   zRequestExtensions | Noner   r   r  zdict[str, str]r   r   r   r;   r   r   dict[str, typing.Any]r2  r:  r   r   )r   r   r   r   rt   r  r   r   r  r"  r   r,  r3  r   r   r?   r6   r-   r-   ~  s     *.&*&*)-#'%)"&:>/38!8! 8!
 '8! $8! $8! '8! !8! #8!  8! 88! -8! 
8!t@*  
;

)r?   r-   c                  H   \ rS rSrSSSSSSSSSSS.
                       S0S jjrS1S jr\S2S j5       r\R                  S3S j5       r\S4S	 j5       r	\	R                  S5S
 j5       r	\S6S j5       r
\S6S j5       r\S7S j5       r\S8S j5       r\S6S j5       r\S9S j5       r\R                  S:S j5       r\S9S j5       rS;S jr\S<S j5       r\S<S j5       r\S<S j5       r\S<S j5       r\S<S j5       r\S<S j5       r\S<S j5       rS=S jrS>S jr\S?S j5       r\S@S j5       r\SAS j5       rS6S  jrSBS! jrSCS" jr S8S# jr!SDSES$ jjr"SDSFS% jjr#SGS& jr$SDSES' jjr%SHS( jr&S8S) jr' SD   SIS* jjr( SD   SJS+ jjr)SKS, jr* SD   SIS- jjr+SHS. jr,S/r-g)Lr.   i  Nrw   )
rq   r   texthtmlr   r   requestr   historydefault_encodingc       
        |   Xl         [        U5      U l        Xl        S U l        U	c  0 O
[        U	5      U l        U
c  / O
[        U
5      U l        SU l	        SU l
        Xl        UcK  [        X4XV5      u  p'U R                  U5        Xpl        [        U[         5      (       a  U R#                  5         OXpl        SU l        g )NFr   )status_coder,   rq   _requestnext_requestr   r   rn   r@  	is_closedis_stream_consumedrA  r   r  r   r:   r   r  _num_bytes_downloaded)rp   rC  rq   r   r=  r>  r   r   r?  r   r@  rA  s               r6   rt   Response.__init__  s     'w'(/ -1 * 2"Z8H$_r$w-"' 0>-gTHOGMM'" K&*--		 !K%&"r?   c                    UR                  5        HF  u  p#UR                  5       S:X  a  SU R                  ;   a  M+  U R                  R                  X#5        MH     g )Nr  zcontent-length)re   rc   rq   r  )rp   r  r=   rD   s       r6   r  Response._prepare;  sG    )//1JCyy{116F$,,6VLL##C/	 2r?   c                R    [        U S5      (       d  [        S5      eU R                  $ )zM
Returns the time taken for the complete request/response
cycle to complete.
_elapsedzK'.elapsed' may only be accessed after the response has been read or closed.)r  RuntimeErrorrM  r   s    r6   elapsedResponse.elapsedB  s/     tZ((+  }}r?   c                    Xl         g rl   )rM  )rp   rO  s     r6   rO  rP  O  s    r?   c                J    U R                   c  [        S5      eU R                   $ )zB
Returns the request instance associated to the current response.
z7The request instance has not been set on this response.)rD  rN  r   s    r6   r?  Response.requestS  s*    
 == I  }}r?   c                    Xl         g rl   )rD  r}   s     r6   r?  rS  ^  s    r?   c                b     U R                   S   nUR                  SSS9$ ! [         a     gf = f)Nhttp_versionr9   ignoreerrorszHTTP/1.1)r   ry   r   )rp   rV  s     r6   rV  Response.http_versionb  sB    	A"&//."AL  &&wx&@@  		s   ! 
..c                     U R                   S   nUR                  SSS9$ ! [         a#    [        R                  " U R
                  5      s $ f = f)Nreason_phraser9   rW  rX  )r   ry   r   r   get_reason_phraserC  )rp   r\  s     r6   r\  Response.reason_phrasek  sV    	B#'???#CM !'''AA  	=**4+;+;<<	=s   ! *AAc                .    U R                   R                  $ )z1
Returns the URL for which the request was made.
)r?  rS   r   s    r6   rS   Response.urlt  s    
 ||r?   c                P    [        U S5      (       d
  [        5       eU R                  $ r  )r  r   r  r   s    r6   r   Response.content{  s"    tZ((!##}}r?   c                >   [        U S5      (       d  U R                  nU(       d  SU l        U R                  $ [        U R                  =(       d    SS9nSR                  UR                  U R                  5      UR                  5       /5      U l        U R                  $ )N_textrR   rw   r4   )r  r   rd  r   r5   r   ry   flush)rp   r   decoders      r6   r=  Response.text  su    tW%%llG
 zz &t}}/GHWWgnnT\\&BGMMO%TU
zzr?   c                J   [        U S5      (       d  U R                  nUb  [        U5      (       dX  [        U R                  [
        5      (       a  U R                  nO,[        U S5      (       a  U R	                  U R                  5      nU=(       d    SU l        U R                  $ )a  
Return an encoding to use for decoding the byte content into text.
The priority for determining this is given by...

* `.encoding = <>` has been set explicitly.
* The encoding as specified by the charset parameter in the Content-Type header.
* The encoding as determined by `default_encoding`, which may either be
  a string like "utf-8" indicating the encoding to use, or may be a callable
  which enables charset autodetection.
ro   r  rw   )r  charset_encodingr7   r:   rA  rA   r  ro   )rp   r5   s     r6   r5   Response.encoding  s     t[)),,H'9('C'Cd33S99#44HT:..#44T]]CH%0DN~~r?   c                H    [        U S5      (       a  [        S5      eXl        g)z
Set the encoding to use for decoding the byte content into text.

If the `text` attribute has been accessed, attempting to set the
encoding will throw a ValueError.
rd  z?Setting encoding after `text` has been accessed is not allowed.N)r  rX   ro   r}   s     r6   r5   rj    s(     4!!Q  r?   c                V    U R                   R                  S5      nUc  g[        U5      $ )z?
Return the encoding, as specified by the Content-Type header.
zContent-TypeN)rq   r   rO   )rp   rM   s     r6   ri  Response.charset_encoding  s,    
 ||''7*<88r?   c                   [        U S5      (       d  / nU R                  R                  SSS9nU HA  nUR                  5       R	                  5       n [
        U   nUR                  U" 5       5        MC     [        U5      S:X  a  US   U l	        U R                  $ [        U5      S:  a  [        US9U l	        U R                  $ [        5       U l	        U R                  $ ! [         a     M  f = f)z
Returns a decoder instance which can be used to decode the raw byte
content, depending on the Content-Encoding used in the response.
_decoderzcontent-encodingT)r   r   r   )children)r  rq   r   rU   rc   r   rY   r   r   ro  r   r   )rp   decodersr   rD   decoder_clss        r6   _get_content_decoderResponse._get_content_decoder  s    
 tZ((-/H\\**+=D*QF++-"4U";KOOKM2	   8}! ( }} X" ,h ? }} !0 1}}   s   C
C,+C,c                B    [         R                  " U R                  5      $ )zE
A property which is `True` for 1xx status codes, `False` otherwise.
)r   is_informationalrC  r   s    r6   rv  Response.is_informational  s    
 %%d&6&677r?   c                B    [         R                  " U R                  5      $ )zE
A property which is `True` for 2xx status codes, `False` otherwise.
)r   
is_successrC  r   s    r6   ry  Response.is_success  s    
  0 011r?   c                B    [         R                  " U R                  5      $ )z
A property which is `True` for 3xx status codes, `False` otherwise.

Note that not all responses with a 3xx status code indicate a URL redirect.

Use `response.has_redirect_location` to determine responses with a properly
formed URL redirection.
)r   is_redirectrC  r   s    r6   r|  Response.is_redirect  s       !1!122r?   c                B    [         R                  " U R                  5      $ )zE
A property which is `True` for 4xx status codes, `False` otherwise.
)r   is_client_errorrC  r   s    r6   r  Response.is_client_error      
 $$T%5%566r?   c                B    [         R                  " U R                  5      $ )zE
A property which is `True` for 5xx status codes, `False` otherwise.
)r   is_server_errorrC  r   s    r6   r  Response.is_server_error  r  r?   c                B    [         R                  " U R                  5      $ )zM
A property which is `True` for 4xx and 5xx status codes, `False` otherwise.
)r   is_errorrC  r   s    r6   r  Response.is_error  s    
 ~~d..//r?   c                    U R                   [        R                  [        R                  [        R                  [        R
                  [        R                  4;   =(       a    SU R                  ;   $ )z[
Returns True for 3xx responses with a properly formed URL redirection,
`False` otherwise.
Location)rC  r   MOVED_PERMANENTLYFOUND	SEE_OTHERTEMPORARY_REDIRECTPERMANENT_REDIRECTrq   r   s    r6   has_redirect_locationResponse.has_redirect_location  sZ      ''(((( + dll*	
r?   c                
   U R                   nUc  [        S5      eU R                  (       a  U $ U R                  (       a  SnOSnU R                  S-  nSSSSS	.nUR                  US
5      nUR                  XS9n[        X!U S9e)z.
Raise the `HTTPStatusError` if one occurred.
zYCannot call `raise_for_status` as the request instance has not been set on this response.z{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'
Redirect location: '{0.headers[location]}'
For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}z{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'
For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}d   zInformational responsezRedirect responsezClient errorzServer error)r            zInvalid status code)
error_type)r?  response)rD  rN  ry  r  rC  r   formatr   )rp   r?  rJ   status_classerror_typesr  s         r6   raise_for_statusResponse.raise_for_status  s     --?> 
 ??K%%w w 
 ''3.'"	
 !__\3HI
...=gFFr?   c                D    [         R                  " U R                  40 UD6$ rl   )jsonlibloadsr   )rp   kwargss     r6   r   Response.json?  s    }}T\\4V44r?   c                    [        U S5      (       d*  [        5       U l        U R                  R                  U 5        U R                  $ )N_cookies)r  r+   r  extract_cookiesr   s    r6   r   Response.cookiesB  s4    tZ((#IDMMM))$/}}r?   c                    U R                   R                  S5      nUc  0 $ [        U5       Vs0 s H-  nUR                  S5      =(       d    UR                  S5      U_M/     sn$ s  snf )z9
Returns the parsed header links of the response, if any
r^   relrS   )rq   r   r`   )rp   headerr^   s      r6   rZ   Response.linksI  sh    
 !!&)>I ,F3
3 XXe_/$63
 	
 
s   4A%c                    U R                   $ rl   )rH  r   s    r6   num_bytes_downloadedResponse.num_bytes_downloadedW  s    )))r?   c                <    SU R                    SU R                   S3$ )Nz<Response [ ]>)rC  r\  r   s    r6   r   Response.__repr__[  s%    T--.a0B0B/C2FFr?   c                |    U R                   R                  5        VVs0 s H  u  pUS;  d  M  X_M     snn$ s  snnf )N)r   r   rF  ro  r(  r*  s      r6   r,  Response.__getstate__^  sE      $}}224
4LL DK4
 	
 
r.  c                    UR                  5        H  u  p#[        XU5        M     SU l        0 U l        [	        5       U l        g )NT)re   r0  rF  r   r	   r   r1  s       r6   r3  Response.__setstate__e  s6     ;;=KDD& )&(r?   c                    [        U S5      (       d$  SR                  U R                  5       5      U l        U R                  $ )'
Read and return the response content.
r  r?   )r  r   
iter_bytesr  r   s    r6   r  Response.readl  s2     tZ((HHT__%67DM}}r?   c              #    #    [        U S5      (       a_  Uc  [        U R                  5      OUn[        S[        U R                  5      [	        US5      5       H  nU R                  X"U-    v   M     gU R                  5       n[        US9n[        U R                  S9   U R                  5        H0  nUR                  U5      nUR                  U5       H  nUv   M	     M2     UR                  5       nUR                  U5       H  nUv   M	     UR                  5        H  nUv   M	     SSS5        g! , (       d  f       g= f7fz
A byte-iterator over the decoded response content.
This allows us to handle gzip, deflate, brotli, and zstd encoded responses.
r  Nr   r   
chunk_sizer?  )r  r   r  rangemaxrs  r   r   rD  iter_rawry   re  rp   r  irf  chunker	raw_bytesdecodedchunks           r6   r  Response.iter_bytest  s    
 4$$/9/AT]]+zJ1c$--0#j!2DEmmAJ77 F //1G!Z8G 7!%I%nnY7G!(!8# "9 "1 "--/$^^G4EK 5$]]_EK - 877s   BEBD4+	E4
E>Ec              #    #    [        U R                  =(       d    SS9n[        US9n[        U R                  S9   U R                  5        H0  nUR                  U5      nUR                  U5       H  nUv   M	     M2     UR                  5       nUR                  U5       H  nUv   M	     UR                  5        H  nUv   M	     SSS5        g! , (       d  f       g= f7fz
A str-iterator over the decoded response content
that handles both gzip, deflate, etc but also detects the content's
string encoding.
rw   r4   r  r  N)r   r5   r   r   rD  r  ry   re  rp   r  rf  r  byte_contenttext_contentr  s          r6   	iter_textResponse.iter_text  s      t}}'?@4T]]3 $ 1&~~l;$^^L9EK : !2 #==?L 5 6  ) 433s   9C!BC	C!
CC!c              #    #    [        5       n[        U R                  S9   U R                  5        H  nUR	                  U5       H  nUv   M	     M!     UR                  5        H  nUv   M	     S S S 5        g ! , (       d  f       g = f7fNr  )r   r   rD  r  ry   re  rp   rf  r=  lines       r6   
iter_linesResponse.iter_lines  sc     -T]]3(#NN40DJ 1 )  
 (	 433s   B	AA8/	B	8
BB	c              #  D  #    U R                   (       a
  [        5       eU R                  (       a
  [        5       e[	        U R
                  [        5      (       d  [        S5      eSU l         SU l        [        US9n[        U R                  S9   U R
                   H=  nU =R                  [        U5      -  sl        UR                  U5       H  nUv   M	     M?     SSS5        UR                  5        H  nUv   M	     U R                  5         g! , (       d  f       N:= f7f)0
A byte-iterator over the raw response content.
z5Attempted to call a sync iterator on an async stream.Tr   r  r  N)rG  r   rF  r   r:   r   r'   rN  rH  r   r   rD  r   ry   re  closerp   r  r  raw_stream_bytesr  s        r6   r  Response.iter_raw  s      "" "">>. $++~66VWW"&%&"4T]]3$(KK **c2B.CC*$^^,<=EK > %0 4 ]]_EK % 	

 43s   BD AD4D 
DD c                   [        U R                  [        5      (       d  [        S5      eU R                  (       d>  SU l        [        U R                  S9   U R                  R                  5         SSS5        gg! , (       d  f       g= f)q
Close the response and release the connection.
Automatically called if the response body is read to completion.
z3Attempted to call an sync close on an async stream.Tr  N)r:   r   r'   rN  rF  r   rD  r  r   s    r6   r  Response.close  s_    
 $++~66TUU~~!DN 7!!# 87 77s   A;;
B	c                   #    [        U S5      (       d+  SR                  U R                  5        Vs/ s Sh  vN oPM  U R                  $  N
 Os  snf sn5      U l        N"7f)r  r  r?   N)r  r   aiter_bytesr  r   s     r6   r"  Response.aread  sK      tZ((HHT=M=M=O%P%PTd}} &Q%PQDMs5   /A!AA
AA
AA!A
AA!c                 #    [        U S5      (       a`  Uc  [        U R                  5      OUn[        S[        U R                  5      [	        US5      5       H  nU R                  X"U-    7v   M     gU R                  5       n[        US9n[        U R                  S9   U R                  5         Sh  vN nUR                  U5      nUR                  U5       H  nU7v   M
     M9   N4
 UR                  5       nUR                  U5       H  nU7v   M
     UR                  5        H  nU7v   M
     SSS5        g! , (       d  f       g= f7fr  )r  r   r  r  r  rs  r   r   rD  	aiter_rawry   re  r  s           r6   r  Response.aiter_bytes  s
     4$$/9/AT]]+zJ1c$--0#j!2DEmmAJ77 F //1G!Z8G 7'+~~'7 $)%nnY7G!(!8# "9$'7 "--/$^^G4EK 5$]]_EK - 877sC   BE D?1C,5C*6C,91D?*C,,A
D?6	E?
E	Ec                 #    [        U R                  =(       d    SS9n[        US9n[        U R                  S9   U R                  5         Sh  vN nUR                  U5      nUR                  U5       H  nU7v   M
     M9   N4
 UR                  5       nUR                  U5       H  nU7v   M
     UR                  5        H  nU7v   M
     SSS5        g! , (       d  f       g= f7fr  )r   r5   r   r   rD  r  ry   re  r  s          r6   
aiter_textResponse.aiter_text  s      t}}'?@4T]]3&*&6&6&8  l&~~l;$^^L9EK : &8 #==?L 5 6  ) 433sA   9C+CBBB1CBA
C	C+
C($C+c               (  #    [        5       n[        U R                  S9   U R                  5         S h  vN nUR	                  U5       H  nU7v   M
     M(   N#
 UR                  5        H  nU7v   M
     S S S 5        g ! , (       d  f       g = f7fr  )r   r   rD  r  ry   re  r  s       r6   aiter_linesResponse.aiter_lines  sk     -T]]3"oo/ d#NN40DJ 1/  
 (	 433s<   BBAAA BAB8	B
BBc               j  #    U R                   (       a
  [        5       eU R                  (       a
  [        5       e[	        U R
                  [        5      (       d  [        S5      eSU l         SU l        [        US9n[        U R                  S9   U R
                    Sh  vN nU =R                  [        U5      -  sl        UR                  U5       H  nU7v   M
     MF   NA
 SSS5        O! , (       d  f       O= fUR                  5        H  nU7v   M
     U R                  5       I Sh  vN    g7f)r  z6Attempted to call an async iterator on an sync stream.Tr   r  r  N)rG  r   rF  r   r:   r   r   rN  rH  r   r   rD  r   ry   re  acloser  s        r6   r  Response.aiter_raw  s      "" "">>. $++77WXX"&%&"4T]]3*.++  &**c2B.CC*$^^,<=EK > + 433 ]]_EK % kkmsN   BD3C,C"C C"">C, C""C,#	D3,
C:66D3,D/-D3c                4  #    [        U R                  [        5      (       d  [        S5      eU R                  (       dF  SU l        [        U R                  S9   U R                  R                  5       I Sh  vN   SSS5        gg N! , (       d  f       g= f7f)r  z3Attempted to call an async close on an sync stream.Tr  N)r:   r   r   rN  rF  r   rD  r  r   s    r6   r  Response.aclose)  sn     
 $++77TUU~~!DN 7kk((*** 87  + 87s0   ABB6B7B;
BB
BB)r  r  ro  rM  ro   rH  rD  rd  rA  r   rq   r@  rF  rG  rE  rC  r   )rC  r   rq   r   r   zResponseContent | Noner=  r   r>  r   r   r   r   r6  r?  zRequest | Noner   zResponseExtensions | Noner@  zlist[Response] | NonerA  z#str | typing.Callable[[bytes], str]r   r   r7  )r   datetime.timedelta)rO  r  r   r   )r   r-   )rD   r-   r   r   r   )r   r(   r8  )r   r   r   )r   r   r   r   )r   r.   )r  r   r   r   )r   r+   )r   z dict[str | None, dict[str, str]]r   r9  r;  rl   )r  
int | Noner   ztyping.Iterator[bytes])r  r  r   typing.Iterator[str]r   r  )r   r   )r  r  r   ztyping.AsyncIterator[bytes])r  r  r   typing.AsyncIterator[str])r   r  ).r   r   r   r   rt   r  r   rO  r   r?  rV  r\  rS   r   r=  r5   ri  rs  rv  ry  r|  r  r  r  r  r  r   r   rZ   r  r   r,  r3  r  r  r  r  r  r  r"  r  r  r  r  r  r   r   r?   r6   r.   r.     s   
 '+*.:>"&04)-@G5'5' $	5'
 (5' 5' 5' 5' 85'  5' .5' '5' >5' 
5'n0 
 
 ^^      ^^  A A B B      
    * __  9 92 8 8 2 2 	3 	3 7 7 7 7 0 0 
 
,#GJ5   
 
 * *G
) .&4$ (, $ 	$ 4 (,$	"* (,$	$8+r?   r.   c                  B   \ rS rSrSrSSS jjrSS jrSS jrSSS jjr   S         SS jjr	  S        S!S	 jjr
S S"S
 jjrSSS jjrS#S jrS$S jrS%S jrS&S jrS'S jrS(S jrS)S jr " S S\R*                  R,                  5      r " S S5      rSrg)*r+   i7  z%
HTTP Cookies, as a mutable mapping.
Nc                   Ub  [        U[        5      (       aP  [        5       U l        [        U[        5      (       a+  UR	                  5        H  u  p#U R                  X#5        M     g g [        U[        5      (       a,  [        5       U l        U H  u  p#U R                  X#5        M     g [        U[        5      (       a>  [        5       U l        UR                   H  nU R                  R                  U5        M      g Xl        g rl   )	r:   r   r   jarre   setrn   r+   
set_cookie)rp   r   r=   rD   cookies        r6   rt   Cookies.__init__<  s    ?j$77 {DH'4((")--/JCHHS( #2 ) && {DH%
$ &)) {DH!++##F+ & Hr?   c                    U R                  U5      nU R                  UR                  5      nU R                  R	                  X#5        g)z?
Loads any cookies based on the response `Set-Cookie` headers.
N)_CookieCompatResponse_CookieCompatRequestr?  r  r  )rp   r  urllib_responseurllib_requests       r6   r  Cookies.extract_cookiesM  s<     44X>2283C3CD  Ar?   c                \    U R                  U5      nU R                  R                  U5        g)z=
Sets an appropriate 'Cookie:' HTTP header on the `Request`.
N)r  r  add_cookie_header)rp   r?  r   s      r6   r  Cookies.set_cookie_headerV  s&     227;"">2r?   c                    0 SS_SU_SU_SS_SS_S	U_S
[        U5      _SUR                  S5      _SU_S[        U5      _SS_SS_SS_SS_SS_SSS0_SS_n[        S0 UD6nU R                  R	                  U5        g)zE
Set a cookie value by name. May optionally include domain and path.
versionr   r+  rD   portNport_specifiedFdomaindomain_specifieddomain_initial_dot.pathpath_specifiedsecureexpiresdiscardTcommentcomment_urlrestHttpOnlyrfc2109r   )r   
startswithr   r  r  )rp   r+  rD   r	  r  r  r  s          r6   r  Cookies.set]  s
   
q
D
 U
 D	

 e
 f
 V
 !&"3"3C"8
 D
 d4j
 e
 t
 t
 t
 4
  Z&!
" u#
& !&!F#r?   c                    SnU R                    H^  nUR                  U:X  d  M  Ub  UR                  U:X  d  M*  Ub  UR                  U:X  d  M?  Ub  SU 3n[	        U5      eUR
                  nM`     Uc  U$ U$ )zt
Get a cookie by name. May optionally include domain and path
in order to specify exactly which cookie to retrieve.
Nz!Multiple cookies exist with name=)r  r+  r	  r  r   rD   )rp   r+  r   r	  r  rD   r  rJ   s           r6   r   Cookies.getw  sz     hhF{{d">V]]f%<|v{{d': ,(I$&PG"0"99 &  =Nr?   c                   Ub  Ub  U R                   R                  X#U5      $ U R                    Vs/ s HA  nUR                  U:X  d  M  Ub  UR                  U:X  d  M*  Ub  UR                  U:X  d  M?  UPMC     nnU H>  nU R                   R                  UR                  UR                  UR                  5        M@     gs  snf )zu
Delete a cookie by name. May optionally include domain and path
in order to specify exactly which cookie to delete.
N)r  clearr+  r	  r  )rp   r+  r	  r  r  removes         r6   deleteCookies.delete  s     $"288>>&55 ((
"{{d"  6==F#:  !4	 " 	 
 FHHNN6==&++v{{C 
s   C 	C C 3C c                    / nUb  UR                  U5        Ub  Uc   eUR                  U5        U R                  R                  " U6   g)zo
Delete all cookies. Optionally include a domain and path in
order to only delete a subset of all the cookies.
N)rY   r  r  )rp   r	  r  argss       r6   r  Cookies.clear  sI    
 KK%%%KKr?   c                v    [        U5      nUR                   H  nU R                  R                  U5        M      g rl   )r+   r  r  )rp   r   r  s      r6   r   Cookies.update  s,    '"kkFHH' "r?   c                $    U R                  X5      $ rl   )r  r*  s      r6   r   Cookies.__setitem__  s    xx$$r?   c                D    U R                  U5      nUc  [        U5      eU$ rl   )r   r   r*  s      r6   r   Cookies.__getitem__  s#    =4. r?   c                $    U R                  U5      $ rl   )r  )rp   r+  s     r6   r   Cookies.__delitem__  s    {{4  r?   c                ,    [        U R                  5      $ rl   )r   r  r   s    r6   r   Cookies.__len__  s    488}r?   c                (    S U R                    5       $ )Nc              3  8   #    U  H  oR                   v   M     g 7frl   )r+  ).0r  s     r6   	<genexpr>#Cookies.__iter__.<locals>.<genexpr>  s     3((s   r  r   s    r6   r   Cookies.__iter__  s    3$((33r?   c                *    U R                    H  n  g   g)NTFr2  )rp   r   s     r6   __bool__Cookies.__bool__  s    A r?   c                    SR                  U R                   Vs/ s H-  nSUR                   SUR                   SUR                   S3PM/     sn5      nSU S3$ s  snf )Nr   z<Cookie rT   z for z />z	<Cookies[r  )r   r  r+  rD   r	  )rp   r  cookies_reprs      r6   r   Cookies.__repr__  sh    yy #hh&F 6;;-qeFMM?#N&
 <.++s   4Ac                  @   ^  \ rS rSrSrSU 4S jjrSU 4S jjrSrU =r$ )Cookies._CookieCompatRequesti  j
Wraps a `Request` instance up in a compatibility interface suitable
for use with `CookieJar` operations.
c                   > [         TU ]  [        UR                  5      [	        UR
                  5      UR                  S9  Xl        g )N)rS   rq   r   )superrt   rA   rS   r   rq   r   r?  )rp   r?  r   s     r6   rt   %Cookies._CookieCompatRequest.__init__  s;    G$W__-~~  
 #Lr?   c                T   > [         TU ]  X5        X R                  R                  U'   g rl   )r>  add_unredirected_headerr?  rq   )rp   r=   rD   r   s      r6   rA  4Cookies._CookieCompatRequest.add_unredirected_header  s"    G+C7(-LL  %r?   r  r?  r-   r   r   r   )	r   r   r   r   r   rt   rA  r   __classcell__)r   s   @r6   r  r;    s    	
	#	. 	.r?   r  c                  ,    \ rS rSrSrSS jrSS jrSrg)	Cookies._CookieCompatResponsei  r<  c                    Xl         g rl   r  )rp   r  s     r6   rt   &Cookies._CookieCompatResponse.__init__  s    $Mr?   c                    [         R                  R                  5       nU R                  R                  R                  5        H	  u  p#X1U'   M     U$ rl   )rI   rJ   rK   r  rq   r   )rp   infor=   rD   s       r6   rK  "Cookies._CookieCompatResponse.info  sD    ==((*D"mm33??A
 "S		 B
 Kr?   rH  Nr  r.   r   r   )r   zemail.message.Message)r   r   r   r   r   rt   rK  r   r   r?   r6   r  rF    s    	
	%	r?   r  r2  rl   )r   r5  r   r   rM  rC  )rR   /)
r+  rA   rD   rA   r	  rA   r  rA   r   r   )NNN)
r+  rA   r   r   r	  r   r  r   r   r   r   )r+  rA   r	  r   r  r   r   r   )r	  r   r  r   r   r   )r+  rA   rD   rA   r   r   )r+  rA   r   rA   )r+  rA   r   r   r   r  r  r   )r   r   r   r   r   rt   r  r  r  r   r  r  r   r   r   r   r   r   r5  r   urllibr?  r-   r  r  r   r   r?   r6   r+   r+   7  s    "B3$: #!  	
  
8 "	DD D 	D
 
D0(
%!4
,.v~~55 .$ r?   r+   )r5   rA   r   r   rl   )r=   str | bytesr5   r   r   r;   )rD   rP  r5   r   r   r;   )rM   rA   r   r   )rD   rA   r   zlist[dict[str, str]])re   z4typing.Iterable[tuple[typing.AnyStr, typing.AnyStr]]r   z4typing.Iterator[tuple[typing.AnyStr, typing.AnyStr]])J
__future__r   r1   datetimeemail.messagerI   r   r  rV   r  urllib.requestrO  collections.abcr   http.cookiejarr   r   r  r   r	   r
   r   	_decodersr   r   r   r   r   r   r   r   _exceptionsr   r   r   r   r   r   r   
_multipartr   _status_codesr   _typesr   r   r   r    r!   r"   r#   r$   r%   r&   r'   _urlsr(   _utilsr)   r*   __all__rd   r7   r>   rE   rO   r`   rh   MutableMappingrA   r,   r-   r.   r+   r   r?   r6   <module>r`     s   "     	   # , S S	 	 	   A       +
7$&;< N-1"J?9p:f##CH- p:fB) B)Jq+ q+hFf##CH- Fr?   