
     j                       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
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-J.r.J/r/J0r0J1r1J2r2J3r3J4r4  SSK5J6r6  SSK7J8r8J9r9J:r:J;r;J<r<J=r=  / SQr> " S S\R~                  \@\@4   5      rA " S S5      rB " S S5      rC " S S\R~                  \@\@4   5      rDg)    )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)is_known_encodingnormalize_header_keynormalize_header_valueobfuscate_sensitive_headersparse_content_type_charsetparse_header_links)CookiesHeadersRequestResponsec                  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)/r0   ;   z1
HTTP headers, as a case-insensitive multi-dict.
Nc                   Uc  / U l         O[        U[        5      (       a  [        UR                   5      U l         O[        U[        5      (       aI  UR                  5        VVs/ s H%  u  p4[        USUS9[        USUS9[        XB5      4PM'     snnU l         O:U VVs/ s H%  u  p4[        USUS9[        USUS9[        XB5      4PM'     snnU l         X l        g s  snnf s  snnf )NF)lowerencodingT)	_list
isinstancer0   listr   itemsr*   r+   	_encoding)selfheadersr7   kvs        W/home/ubuntu/second-brain/public-api/venv/lib/python3.13/site-packages/httpx/_models.py__init__Headers.__init__@   s    
 ?DJ))gmm,DJ)) $MMO ,DA	 )%(K($J*17
 ,DJ $ $DA	 )%(K($J*17
 $DJ "%s   $,C,C!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.
)asciiutf-8z
iso-8859-1)r<   rawdecodeUnicodeDecodeError)r=   r7   keyvalues       rA   r7   Headers.encoding^   s     >>!."&((JC

8,X. #+ &.N
 ~~! / ".~~ . s   "A33
BBc                    Xl         g N)r<   r=   rK   s     rA   r7   rL   w   s        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.
)r8   )r=   raw_key_rK   s       rA   rG   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 rN   )r8   rH   r7   keysr=   rS   rJ   rK   s       rA   rV   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, )r8   rH   r7   valuesr=   values_dictrS   rJ   rK   str_key	str_values          rA   r[   Headers.values   sq    &(!ZZMAEjj/GT]]3I%$"YK(88$'0G$ ( !!##rP   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.
rZ   )r8   rH   r7   r;   r\   s          rA   r;   Headers.items   ss    
 ')!ZZMAEjj/GT]]3I%$"YK(88$'0G$ (   ""rP   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.
)r8   rH   r7   rW   s       rA   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)r=   rJ   defaults      rA   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.
,)r6   encoder7   r8   rH   extendsplitstrip)r=   rJ   split_commasget_header_keyrS   item_key
item_valuer[   split_valuesrK   items              rA   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 rN   )r0   rV   popr8   rn   )r=   r>   rJ   s      rA   updateHeaders.update   sD    '"<<>C{ " 	

'--(rP   c                (    [        X R                  S9$ )Nr7   )r0   r7   r=   s    rA   copyHeaders.copy   s    tmm44rP   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
rZ   )r6   rm   r7   r8   rH   joinrg   )r=   rJ   normalized_keyrS   
header_keyheader_valuer;   s          rA   __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.
rF   r   Nr   )rm   r<   r6   	enumerater8   reversedappend)
r=   rJ   rK   set_key	set_value
lookup_keyidxrS   rs   found_indexess
             rA   __setitem__Headers.__setitem__   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)r6   rm   r7   r   r8   rg   r   )r=   rJ   del_keyr   rS   rs   pop_indexess          rA   __delitem__Headers.__delitem__   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 rN   )r6   rm   r7   r8   )r=   rJ   r   rS   s       rA   __contains__Headers.__contains__  s?    YY[''6
::>:iaac:>>>>s   Ac                4    [        U R                  5       5      $ rN   )iterrV   r   s    rA   __iter__Headers.__iter__  s    DIIK  rP   c                ,    [        U R                  5      $ rN   )lenr8   r   s    rA   __len__Headers.__len__  s    4::rP   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)r0   
ValueErrorr8   sorted)r=   otherother_headersrS   rJ   rK   	self_list
other_lists           rA   __eq__Headers.__eq__  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$ )N rE   z, encoding=())	__class____name__r7   r:   r,   rd   dictr   )r=   
class_nameencoding_stras_listas_dictno_duplicate_keyss         rA   __repr__Headers.__repr__&  s    ^^,,
==G#((9:L243C3C3EFGw-LCL8 \7+l^1==Qwk,q99rP   )r<   r8   NN)r>   HeaderTypes | Noner7   
str | NonereturnNoner   strrK   r   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]]rN   )rJ   r   rh   
typing.Anyr   r   )F)rJ   r   rq   boolr   z	list[str])r>   r   r   r   )r   r0   )rJ   r   r   r   rJ   r   rK   r   r   r   )rJ   r   r   r   )rJ   r   r   r   )r   ztyping.Iterator[typing.Any]r   int)r   r   r   r   )r   
__module____qualname____firstlineno____doc__rB   propertyr7   setterrG   rV   r[   r;   rd   ri   rw   r{   r   r   r   r   r   r   r   r   r   __static_attributes__ rP   rA   r0   r0   ;   s     '+#"#" " 
	"<  0 __  F FX	$#	
,)5(@0 $?!7:rP   r0   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)r1   i6  N)	paramsr>   cookiescontentdatafilesjsonstream
extensionsc       	           [        U[        5      (       a  UR                  S5      R                  5       OUR                  5       U l        [        U5      U l        Ub  U R                  R                  US9U l        [        U5      U l	        Uc  0 OU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 )NrE   )r   zcontent-type)content_type)r   r   r   r   boundary)r9   bytesrH   uppermethodr(   urlcopy_merge_paramsr0   r>   r   r/   set_cookie_headerri   r
   r   rm   r7   _preparer   r   read)r=   r   r   r   r>   r   r   r   r   r   r   r   r   s                rA   rB   Request.__init__7  s"   " &%(( MM'"((* 	
 s8xx111@DHw' * 2"
G..t4>'+||'7'7'GL,A# ".!4!4T\\5J5J!K
OG MM'" K&*--		 ." !KrP   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)r;   r6   r>   
setdefaultr   hostr   netlocr   r0   rG   )r=   default_headersrJ   rK   auto_headershas_hosthas_content_lengths          rA   r   Request._preparew  s    )//1JCyy{116F$,,6VLL##C/	 2 35T\\),S0Ct||0S 	 DHHMM$((// :;!dkk5M&M 9:|ll.>.>>?rP   c                P    [        U S5      (       d
  [        5       eU R                  $ N_content)hasattrr   r   r   s    rA   r   Request.content  s"    tZ(( ""}}rP   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   rP   )r   r9   r   typingIterabler   r   r   r   s    rA   r   Request.read  sm     tZ((dkk6??;;;;HHT[[1DMdkk:66 )7}}rP   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   rP   N)r   r9   r   r   AsyncIterabler   r   r   r=   parts     rA   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   rZ   z)>)r   r   r   r   r   )r=   r   r   s      rA   r   Request.__repr__  s=    ^^,,
$((m:,abr::rP   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__r;   r=   namerK   s      rA   __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 rN   )r;   setattrr   r	   r   r=   stater  rK   s       rA   __setstate__Request.__setstate__  s/     ;;=KDD& )&(rP   )r   r   r>   r   r   r   )r   zstr | bytesr   z	URL | strr   zQueryParamTypes | Noner>   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]r  r  r   r   )r   r   r   r   rB   r   r   r   r   r  r   r  r  r   r   rP   rA   r1   r1   6  s     *.&*&*)-#'%)"&:>/3>!>! >!
 '>! $>! $>! '>! !>! #>!  >! 8>! ->! 
>!@@*  
;

)rP   r1   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)Lr2   i  NrF   )
r>   r   texthtmlr   r   requestr   historydefault_encodingc       
        j   Xl         [        U5      U l        Xl        S U l        U	c  0 OU	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_coder0   r>   _requestnext_requestr   r:   r   	is_closedis_stream_consumedr!  r   r   r   r9   r   r   _num_bytes_downloaded)r=   r#  r>   r   r  r  r   r   r  r   r   r!  s               rA   rB   Response.__init__  s     'w'(/ -14>4FbJ$_r$w-"' 0>-gTHOGMM'" K&*--		 !K%&"rP   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)r;   r6   r>   r   )r=   r   rJ   rK   s       rA   r   Response._prepare  sG    )//1JCyy{116F$,,6VLL##C/	 2rP   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   RuntimeErrorr-  r   s    rA   elapsedResponse.elapsed   s/     tZ((+  }}rP   c                    Xl         g rN   )r-  )r=   r/  s     rA   r/  r0    s    rP   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.)r$  r.  r   s    rA   r  Response.request  s*    
 == I  }}rP   c                    Xl         g rN   )r$  rO   s     rA   r  r3    s    rP   c                b     U R                   S   nUR                  SSS9$ ! [         a     gf = f)Nhttp_versionrE   ignoreerrorszHTTP/1.1)r   rH   rg   )r=   r6  s     rA   r6  Response.http_version   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_phraserE   r7  r8  )r   rH   rg   r   get_reason_phraser#  )r=   r<  s     rA   r<  Response.reason_phrase)  sV    	B#'???#CM !'''AA  	=**4+;+;<<	=s   ! *AAc                .    U R                   R                  $ )z1
Returns the URL for which the request was made.
)r  r   r   s    rA   r   Response.url2  s    
 ||rP   c                P    [        U S5      (       d
  [        5       eU R                  $ r   )r   r   r   r   s    rA   r   Response.content9  s"    tZ((!##}}rP   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_textr   rF   r~   )r   r   rD  r   r7   r   rH   flush)r=   r   decoders      rA   r  Response.text?  su    tW%%llG
 zz &t}}/GHWWgnnT\\&BGMMO%TU
zzrP   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.
r<   r   rF   )r   charset_encodingr)   r9   r!  r   r   r<   )r=   r7   s     rA   r7   Response.encodingJ  s     t[)),,H'8'B'Bd33S99#44HT:..#44T]]CH%0DN~~rP   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   r   r<   rO   s     rA   r7   rJ  `  s(     4!!Q  rP   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)r>   ri   r-   )r=   r   s     rA   rI  Response.charset_encodingn  s,    
 ||''7),77rP   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)rq   r   r   )children)r   r>   rw   rp   r6   r   r   rg   r   rO  r   r   )r=   decodersr[   rK   decoder_clss        rA   _get_content_decoderResponse._get_content_decodery  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_informationalr#  r   s    rA   rV  Response.is_informational  s    
 %%d&6&677rP   c                B    [         R                  " U R                  5      $ )zE
A property which is `True` for 2xx status codes, `False` otherwise.
)r   
is_successr#  r   s    rA   rY  Response.is_success  s    
  0 011rP   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_redirectr#  r   s    rA   r\  Response.is_redirect  s       !1!122rP   c                B    [         R                  " U R                  5      $ )zE
A property which is `True` for 4xx status codes, `False` otherwise.
)r   is_client_errorr#  r   s    rA   r_  Response.is_client_error      
 $$T%5%566rP   c                B    [         R                  " U R                  5      $ )zE
A property which is `True` for 5xx status codes, `False` otherwise.
)r   is_server_errorr#  r   s    rA   rc  Response.is_server_error  ra  rP   c                B    [         R                  " U R                  5      $ )zM
A property which is `True` for 4xx and 5xx status codes, `False` otherwise.
)r   is_errorr#  r   s    rA   rf  Response.is_error  s    
 ~~d..//rP   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)r#  r   MOVED_PERMANENTLYFOUND	SEE_OTHERTEMPORARY_REDIRECTPERMANENT_REDIRECTr>   r   s    rA   has_redirect_locationResponse.has_redirect_location  sZ      ''(((( + dll*	
rP   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)r$  r.  rY  ro  r#  ri   formatr   )r=   r  messagestatus_classerror_typesrv  s         rA   raise_for_statusResponse.raise_for_status  s     --?> 
 ??K%%w w 
 ''3.'"	
 !__\3HI
...=gFFrP   c                D    [         R                  " U R                  40 UD6$ rN   )jsonlibloadsr   )r=   kwargss     rA   r   Response.json  s    }}T\\4V44rP   c                    [        U S5      (       d*  [        5       U l        U R                  R                  U 5        U R                  $ )N_cookies)r   r/   r  extract_cookiesr   s    rA   r   Response.cookies   s4    tZ((#IDMMM))$/}}rP   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
linkrelr   )r>   ri   r.   )r=   headerr  s      rA   linksResponse.links  sh    
 !!&)>I +62
2 XXe_/$62
 	
 
s   4A%c                    U R                   $ rN   )r(  r   s    rA   num_bytes_downloadedResponse.num_bytes_downloaded  s    )))rP   c                <    SU R                    SU R                   S3$ )Nz<Response [ ]>)r#  r<  r   s    rA   r   Response.__repr__  s%    T--.a0B0B/C2FFrP   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   r&  rO  r  r
  s      rA   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)r;   r  r&  r   r	   r   r  s       rA   r  Response.__setstate__#  s6     ;;=KDD& )&(rP   c                    [        U S5      (       d$  SR                  U R                  5       5      U l        U R                  $ )'
Read and return the response content.
r   rP   )r   r   
iter_bytesr   r   s    rA   r   Response.read*  s2     tZ((HHT__%67DM}}rP   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   r$  iter_rawrH   rE  r=   r  irF  chunker	raw_bytesdecodedchunks           rA   r  Response.iter_bytes2  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.
rF   r~   r  r  N)r   r7   r   r   r$  r  rH   rE  r=   r  rF  r  byte_contenttext_contentr  s          rA   	iter_textResponse.iter_textI  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   r$  r  rH   rE  r=   rF  r  lines       rA   
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)r'  r   r&  r   r9   r   r'   r.  r(  r   r   r$  r   rH   rE  closer=   r  r  raw_stream_bytesr  s        rA   r  Response.iter_rawe  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)r9   r   r'   r.  r&  r   r$  r  r   s    rA   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   rP   N)r   r   aiter_bytesr   r   s     rA   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   r$  	aiter_rawrH   rE  r  s           rA   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   r7   r   r   r$  r  rH   rE  r  s          rA   
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   r$  r  rH   rE  r  s       rA   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)r'  r   r&  r   r9   r   r   r.  r(  r   r   r$  r   rH   rE  acloser  s        rA   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)r9   r   r   r.  r&  r   r$  r  r   s    rA   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  r-  r<   r(  r$  rD  r!  r   r>   r   r&  r'  r%  r#  r   )r#  r   r>   r   r   zResponseContent | Noner  r   r  r   r   r   r   r  r  zRequest | Noner   zResponseExtensions | Noner   zlist[Response] | Noner!  z#str | typing.Callable[[bytes], str]r   r   r  )r   datetime.timedelta)r/  r  r   r   )r   r1   )rK   r1   r   r   r   )r   r(   r  )r   r   r   )r   r   r   r   )r   r2   )r  r   r   r   )r   r/   )r   z dict[str | None, dict[str, str]]r   r  r  rN   )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   rB   r   r   r/  r   r  r6  r<  r   r   r  r7   rI  rS  rV  rY  r\  r_  rc  rf  ro  r|  r   r   r  r  r   r  r  r   r  r  r  r  r  r  r  r  r  r  r  r   r   rP   rA   r2   r2     s   
 '+*.:>"&04)-@G5'5' $	5'
 (5' 5' 5' 5' 85'  5' .5' '5' >5' 
5'n0 
 
 ^^      ^^  A A B B      
    * __  8 82 8 8 2 2 	3 	3 7 7 7 7 0 0 
 
,#GJ5   
 
 * *G
) .&4$ (, $ 	$ 4 (,$	"* (,$	$8+rP   r2   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/   i  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 rN   )	r9   r   r   jarr;   setr:   r/   
set_cookie)r=   r   rJ   rK   cookies        rA   rB   Cookies.__init__  s    ?j$77 {DH'4((")--/JCHHS( #2 ) && {DH%
$ &)) {DH!++##F+ & HrP   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  )r=   rw  urllib_responseurllib_requests       rA   r  Cookies.extract_cookies  s<     44X>2283C3CD  ArP   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)r=   r  r  s      rA   r   Cookies.set_cookie_header  s&     227;"">2rP   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  rK   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  )r=   r  rK   r  r  r  r  s          rA   r  Cookies.set  s
   
q
D
 U
 D	

 e
 f
 V
 !&"3"3C"8
 D
 d4j
 e
 t
 t
 t
 4
  Z&!
" u#
& !&!F#rP   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   rK   )r=   r  rh   r  r  rK   r  ry  s           rA   ri   Cookies.get5  sz     hhF{{d">V]]f%<|v{{d': ,(I$&PG"0"99 &  =NrP   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  )r=   r  r  r  r  removes         rA   deleteCookies.deleteN  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)r   r  r  )r=   r  r  argss       rA   r  Cookies.clearf  sI    
 KK%%%KKrP   c                v    [        U5      nUR                   H  nU R                  R                  U5        M      g rN   )r/   r  r  )r=   r   r  s      rA   r{   Cookies.updates  s,    '"kkFHH' "rP   c                $    U R                  X5      $ rN   )r  r
  s      rA   r   Cookies.__setitem__x  s    xx$$rP   c                D    U R                  U5      nUc  [        U5      eU$ rN   )ri   rg   r
  s      rA   r   Cookies.__getitem__{  s#    =4. rP   c                $    U R                  U5      $ rN   )r  )r=   r  s     rA   r   Cookies.__delitem__  s    {{4  rP   c                ,    [        U R                  5      $ rN   )r   r  r   s    rA   r   Cookies.__len__  s    488}rP   c                (    S U R                    5       $ )Nc              3  8   #    U  H  oR                   v   M     g 7frN   )r  ).0r  s     rA   	<genexpr>#Cookies.__iter__.<locals>.<genexpr>  s     3((s   r  r   s    rA   r   Cookies.__iter__  s    3$((33rP   c                *    U R                    H  n  g   g)NTFr  )r=   rS   s     rA   __bool__Cookies.__bool__  s    A rP   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 )NrZ   z<Cookie =z for z />z	<Cookies[r  )r   r  r  rK   r  )r=   r  cookies_reprs      rA   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)r   r>   r   )superrB   r   r   r   r>   r   r  )r=   r  r   s     rA   rB   %Cookies._CookieCompatRequest.__init__  s;    G$W__-~~  
 #LrP   c                T   > [         TU ]  X5        X R                  R                  U'   g rN   )r"  add_unredirected_headerr  r>   )r=   rJ   rK   r   s      rA   r%  4Cookies._CookieCompatRequest.add_unredirected_header  s"    G+C7(-LL  %rP   r  r  r1   r   r   r   )	r   r   r   r   r   rB   r%  r   __classcell__)r   s   @rA   r  r    s    	
	#	. 	.rP   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 rN   rw  )r=   rw  s     rA   rB   &Cookies._CookieCompatResponse.__init__  s    $MrP   c                    [         R                  R                  5       nU R                  R                  R                  5        H	  u  p#X1U'   M     U$ rN   )emailry  Messagerw  r>   rd   )r=   inforJ   rK   s       rA   r1  "Cookies._CookieCompatResponse.info  sD    ==((*D"mm33??A
 "S		 B
 KrP   r,  Nrw  r2   r   r   )r   zemail.message.Message)r   r   r   r   r   rB   r1  r   r   rP   rA   r  r*    s    	
	%	rP   r  r  rN   )r   r  r   r   r3  r'  )r   /)
r  r   rK   r   r  r   r  r   r   r   )NNN)
r  r   rh   r   r  r   r  r   r   r   r   )r  r   r  r   r  r   r   r   )r  r   r  r   r   r   )r  r   rK   r   r   r   )r  r   r   r   )r  r   r   r   r   r  r  r   )r   r   r   r   r   rB   r  r   r  ri   r  r  r{   r   r   r   r   r   r  r   urllibr  r1   r  r  r   r   rP   rA   r/   r/     s    "B3$: #!  	
  
8 "	DD D 	D
 
D0(
%!4
,.v~~55 .$ rP   r/   )E
__future__r   datetimeemail.messager/  r   r  r   urllib.requestr5  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*   r+   r,   r-   r.   __all__MutableMappingr   r0   r1   r2   r/   r   rP   rA   <module>rE     s    "      # , S S	 	 	   A        8x:f##CH- x:vH) H)Vq+ q+hFf##CH- FrP   