
    8i,$                        S r SSKrSSKr SSKJr  SSKJr  SSKJr   SSK	J
r
  SSKJr  \R                  S:  a  SrO SS	KJr  \R"                  S
:  r\(       a  SSKJrJr  SSKrSSKJrJr  OSSKJrJr  SSKrSSKJr  SSKJr   \r " S S\5      r"Sr#g! \ a    SSKJr  SSKJr  SSKJr   Nf = f! \ a!     SSKJ
r
  SSKJr   N! \ a    Sr
Sr  Nf = ff = f! \ a	    SS	KJr   Nf = f! \ a    \ \!4r Ntf = f)zPrivate module full of compatibility hacks.

Primarily this is for downstream redistributions of requests that unvendor
urllib3 without providing a shim.

.. warning::

    This module is private. If you use it, and something breaks, you were
    warned
    N)fields)filepost)poolmanager)HTTPConnection)
connectioni  )timeout)   r   )MappingMutableMapping)	urlencodeurljoin)r   )r   c                     ^  \ rS rSrSrSU 4S jjrS rS rS rS r	S r
S	 r\(       d  \R                  r\R                  r\" 5       rS
 rS r\4S jrS rS rS rS r\r\r\rS rS rS rS rS r S r!\"S 5       r#Sr$U =r%$ )HTTPHeaderDict>   a  
:param headers:
    An iterable of field-value pairs. Must not contain multiple field names
    when compared case-insensitively.

:param kwargs:
    Additional field-value pairs to pass in to ``dict.update``.

A ``dict`` like container for storing HTTP Headers.

Field names are stored and compared case-insensitively in compliance with
RFC 7230. Iteration provides the first case-sensitive key seen for each
case-insensitive pair.

Using ``__setitem__`` syntax overwrites fields that compare equal
case-insensitively in order to maintain ``dict``'s api. For fields that
compare equal, instead create a new ``HTTPHeaderDict`` and use ``.add``
in a loop.

If multiple fields that are equal case-insensitively are passed to the
constructor or ``.update``, the behavior is undefined and some will be
lost.

>>> headers = HTTPHeaderDict()
>>> headers.add('Set-Cookie', 'foo=bar')
>>> headers.add('set-cookie', 'baz=quxx')
>>> headers['content-length'] = '7'
>>> headers['SET-cookie']
'foo=bar, baz=quxx'
>>> headers['Content-Length']
'7'
c                    > [         [        U ]  5         0 U l        Ub8  [	        U[        5      (       a  U R                  U5        OU R                  U5        U(       a  U R                  U5        g g N)superr   __init__
_container
isinstance
_copy_fromextend)selfheaderskwargs	__class__s      i/home/dmtnaga/Documents/work/airagagent/rag_env/lib/python3.13/site-packages/requests_toolbelt/_compat.pyr   HTTPHeaderDict.__init__`   sV    nd,.'>22(G$KK     c                 x    X4U R                   UR                  5       '   U R                   UR                  5          $ r   r   lowerr   keyvals      r   __setitem__HTTPHeaderDict.__setitem__k   s-    (+z		$syy{++r   c                 d    U R                   UR                  5          nSR                  USS  5      $ )N,    r   r"   joinr#   s      r   __getitem__HTTPHeaderDict.__getitem__o   s+    oociik*yyQR!!r   c                 :    U R                   UR                  5       	 g r   r!   r   r$   s     r   __delitem__HTTPHeaderDict.__delitem__s   s    OOCIIK(r   c                 <    UR                  5       U R                  ;   $ r   )r"   r   r0   s     r   __contains__HTTPHeaderDict.__contains__v   s    yy{doo--r   c                    [        U[        5      (       d  [        US5      (       d  g[        U[        U 5      5      (       d  [        U 5      " U5      nU R	                  5        VVs0 s H  u  p#UR                  5       U_M     snnUR	                  5        VVs0 s H  u  p#UR                  5       U_M     snn:H  $ s  snnf s  snnf )NkeysF)r   r
   hasattrtype
itermergedr"   )r   otherkvs       r   __eq__HTTPHeaderDict.__eq__y   s    %))'%2H2H%d,,Ju%E*.//*;<*;$!A*;<*/*:*:*<=*<$!A*<=> 	?<=s   &B<Cc                 .    U R                  U5      (       + $ r   )r>   )r   r;   s     r   __ne__HTTPHeaderDict.__ne__   s    ;;u%%%r   c                 ,    [        U R                  5      $ r   )lenr   r   s    r   __len__HTTPHeaderDict.__len__   s    4??##r   c              #   \   #    U R                   R                  5        H
  nUS   v   M     g 7f)Nr   )r   values)r   valss     r   __iter__HTTPHeaderDict.__iter__   s%     OO**,Dq'M -s   *,c                 V     X   nX	 U$ ! [          a    X R                  L a  e Us $ f = f)zD.pop(k[,d]) -> v, remove specified key and return its value.

If key is not found, d is returned if given, otherwise KeyError is
raised.
)KeyError_HTTPHeaderDict__marker)r   r$   defaultvalues       r   popHTTPHeaderDict.pop   s=    	IE 	L  	--'N	s   
 ((c                 *     X	 g ! [          a     g f = fr   )rN   r0   s     r   discardHTTPHeaderDict.discard   s    		 		s    
c                     UR                  5       nX4nU R                  R                  X45      nXELa@  [        U[        5      (       a  UR                  U5        gUS   US   U/U R                  U'   gg)zAdds a (name, value) pair, doesn't overwrite the value if it already
exists.

>>> headers = HTTPHeaderDict(foo='bar')
>>> headers.add('Foo', 'baz')
>>> headers['foo']
'bar, baz'
r   r*   N)r"   r   
setdefaultr   listappend)r   r$   r%   	key_lowernew_valsrJ   s         r   addHTTPHeaderDict.add   sm     IIK	8)))>$%%C  /31gtAw-D	*  r   c                    [        U5      S:  a#  [        SR                  [        U5      5      5      e[        U5      S:  a  US   OSn[        U[        5      (       a+  UR                  5        H  u  pEU R                  XE5        M     O[        U[        5      (       a  U H  nU R                  XCU   5        M     OY[        US5      (       a,  UR                  5        H  nU R                  XCU   5        M     OU H  u  pFU R                  XF5        M     UR                  5        H  u  pFU R                  XF5        M     g)zGeneric import function for any type of header-like object.
Adapted version of MutableMapping.update in order to insert items
with self.add instead of self.__setitem__
r*   z8extend() takes at most 1 positional arguments ({} given)r    r7   N)rD   	TypeErrorformatr   r   	iteritemsr]   r
   r8   r7   items)r   argsr   r;   r$   r%   rQ   s          r   r   HTTPHeaderDict.extend   s    
 t9q= 3396#d)3DF Ft9>Qre^,,!OO-" .w''Cj) UF##zz|Cj) $ $
$ $ !,,.JCHHS  )r   c                      U R                   UR                  5          n[        U[        5      (       a  US   /$ USS $ ! [         a    / s $ f = f)zeReturns a list of all the values for the named field. Returns an
empty list if the key doesn't exist.r*   N)r   r"   r   tuplerN   )r   r$   rJ   s      r   getlistHTTPHeaderDict.getlist   sW    	 ??399;/D $&&Qy ABx  	I	s   ? AAc                 j    [        U 5      R                  < S[        U R                  5       5      < S3$ )N())r9   __name__dictr:   rE   s    r   __repr__HTTPHeaderDict.__repr__   s#    :..T__5F0GHHr   c                     U HU  nUR                  U5      n[        U[        5      (       a  [        U5      nU/U-   U R                  UR	                  5       '   MW     g r   )ri   r   rY   r   r"   )r   r;   r$   r%   s       r   r   HTTPHeaderDict._copy_from   sJ    C--$C#t$$3i,/53;DOOCIIK( r   c                 H    [        U 5      " 5       nUR                  U 5        U$ r   )r9   r   )r   clones     r   copyHTTPHeaderDict.copy   s     T
r   c              #      #    U  H5  nU R                   UR                  5          nUSS  H  nUS   U4v   M     M7     g7f)z8Iterate over all header lines, including duplicate ones.r*   Nr   r!   )r   r$   rJ   r%   s       r   rc   HTTPHeaderDict.iteritems   sA     C??399;/DABx1gsl"   s   =?c              #      #    U  H;  nU R                   UR                  5          nUS   SR                  USS 5      4v   M=     g7f)z:Iterate over all headers, merging duplicate ones together.r   r)   r*   Nr+   r#   s      r   r:   HTTPHeaderDict.itermerged  sA     C//#))+.Ca&$))CG,,, s   AAc                 4    [        U R                  5       5      $ r   )rY   rc   rE   s    r   rd   HTTPHeaderDict.items  s    DNN$%%r   c                    / nUR                    Hp  nUR                  S5      (       a#  US   u  pEXES-   UR                  5       -   4US'   M<  UR                  SS5      u  pEUR	                  XER                  5       45        Mr     U " U5      $ )z4Read headers from a Python 2 httplib message object.) 	z
:r*   )r   
startswithrstripsplitrZ   strip)clsmessager   liner$   rQ   s         r   from_httplibHTTPHeaderDict.from_httplib  s     OOD{++$R[
"FNT[[]$BCC+JCNNC/0 $ 7|r   )r   r   )&rn   
__module____qualname____firstlineno____doc__r   r&   r-   r1   r4   r>   rA   PY3r   iterkeys
itervaluesobjectrO   rF   rK   rR   rU   r]   r   ri   
getheadersgetallmatchingheadersigetrp   r   rv   rc   r:   rd   classmethodr   __static_attributes____classcell__)r   s   @r   r   r   >   s    B	 ,").?& !**#..
xH$
  ( (E.!4  J#DI7
#-&  r   r   )

basestringr   r   r   r   r   r   queuer   r   )$r   sysrequestsrequests.packages.urllib3r   r   r   ImportErrorurllib3$requests.packages.urllib3.connectionr   r   urllib3.connection	__build__r   requests.packages.urllib3.utilurllib3.utilversion_infor   collections.abcr
   r   r   urllib.parser   r   collectionsQueueurlliburlparser   	NameErrorstrbytesr   __all__r`   r   r   <module>r      s  	  $025	C4  G): 
7//3  J
b^ bJa  $ #$  5& 
	  )()"  uJs]   B B7 C! 	C3 B43B47C>C
CCCC!C0/C03
D ?D 