
    q"hl,                         S SK Jr   S SKJrJ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Jr  SS/r\" 5       r " S S\5      r " S S\5      rg! \ a    S SKJrJr   NSf = f! \ a     " S S5      r Nbf = f)    )absolute_import)MappingMutableMapping)RLockc                        \ rS rSrS rS rSrg)r      c                     g N selfs    R/var/www/html/env/lib/python3.13/site-packages/pip/_vendor/urllib3/_collections.py	__enter__RLock.__enter__           c                     g r
   r   )r   exc_type	exc_value	tracebacks       r   __exit__RLock.__exit__   r   r   r   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes__r   r   r   r   r      s    		r   r   )OrderedDict   )InvalidHeader)six)iterkeys
itervaluesRecentlyUsedContainerHTTPHeaderDictc                   P    \ rS rSrSr\rSS jrS rS r	S r
S rS	 rS
 rS rSrg)r$      am  
Provides a thread-safe dict-like container which maintains up to
``maxsize`` keys while throwing away the least-recently-used keys beyond
``maxsize``.

:param maxsize:
    Maximum number of recent elements to retain.

:param dispose_func:
    Every time an item is evicted from the container,
    ``dispose_func(value)`` is called.  Callback which will get called
Nc                 d    Xl         X l        U R                  5       U l        [	        5       U l        g r
   )_maxsizedispose_funcContainerCls
_containerr   lock)r   maxsizer*   s      r   __init__RecentlyUsedContainer.__init__/   s&    (++-G	r   c                     U R                      U R                  R                  U5      nX R                  U'   UsS S S 5        $ ! , (       d  f       g = fr
   )r-   r,   pop)r   keyitems      r   __getitem__!RecentlyUsedContainer.__getitem__6   s6    YY??&&s+D#'OOC  YYs   +A
Ac                    [         nU R                     U R                  R                  U[         5      nX R                  U'   [	        U R                  5      U R
                  :  a  U R                  R                  SS9u  pCS S S 5        U R                  (       a  U[         La  U R                  U5        g g g ! , (       d  f       N<= f)NF)last)_Nullr-   r,   getlenr)   popitemr*   )r   r3   valueevicted_value_keys        r   __setitem__!RecentlyUsedContainer.__setitem__=   s    YY OO//U;M#(OOC  4??#dmm3&*oo&=&=5&=&I#  e!;m, "< Ys   A-B66
Cc                     U R                      U R                  R                  U5      nS S S 5        U R                  (       a  U R                  W5        g g ! , (       d  f       N2= fr
   )r-   r,   r2   r*   )r   r3   r=   s      r   __delitem__!RecentlyUsedContainer.__delitem__L   sH    YYOO'',E  e$  Ys   A
A#c                 z    U R                      [        U R                  5      sS S S 5        $ ! , (       d  f       g = fr
   )r-   r;   r,   r   s    r   __len__RecentlyUsedContainer.__len__S   s    YYt' YYs   ,
:c                     [        S5      e)Nz7Iteration over this class is unlikely to be threadsafe.)NotImplementedErrorr   s    r   __iter__RecentlyUsedContainer.__iter__W   s    !E
 	
r   c                    U R                      [        [        U R                  5      5      nU R                  R	                  5         S S S 5        U R
                  (       a  W H  nU R                  U5        M     g g ! , (       d  f       N;= fr
   )r-   listr#   r,   clearr*   )r   valuesr=   s      r   rN   RecentlyUsedContainer.clear\   sa    YY*T__56FOO!!# 
 !!%(    Ys   9A;;
B	c                     U R                      [        [        U R                  5      5      sS S S 5        $ ! , (       d  f       g = fr
   )r-   rM   r"   r,   r   s    r   keysRecentlyUsedContainer.keysf   s$    YY12 YYs	   5
A)r,   r)   r*   r-   )
   N)r   r   r   r   __doc__r   r+   r/   r5   r@   rC   rF   rJ   rN   rR   r   r   r   r   r$   r$      s6     L-%(

)3r   c                   4  ^  \ 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\R                  (       a  \R                  r\R                   r\" 5       rS
 rS r\4S jrS rS rS r\4S jrS r\r\r\r\rS rS r S r!S r"S r#S r$\%S 5       r&Sr'U =r($ )r%   k   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         [        5       U l        Ub8  [        U[        5      (       a  U R                  U5        OU R                  U5        U(       a  U R                  U5        g g r
   )superr%   r/   r   r,   
isinstance
_copy_fromextend)r   headerskwargs	__class__s      r   r/   HTTPHeaderDict.__init__   sX    nd,.%-'>22(G$KK r   c                 x    X/U R                   UR                  5       '   U R                   UR                  5          $ r
   r,   lowerr   r3   vals      r   r@   HTTPHeaderDict.__setitem__   s-    (+z		$syy{++r   c                 d    U R                   UR                  5          nSR                  USS  5      $ )N, r   r,   rc   joinrd   s      r   r5   HTTPHeaderDict.__getitem__   s+    oociik*yyQR!!r   c                 :    U R                   UR                  5       	 g r
   rb   r   r3   s     r   rC   HTTPHeaderDict.__delitem__   s    OOCIIK(r   c                 <    UR                  5       U R                  ;   $ r
   )rc   r,   rm   s     r   __contains__HTTPHeaderDict.__contains__   s    yy{doo--r   c                 (   [        U[        5      (       d  [        US5      (       d  g[        U[        U 5      5      (       d  [        U 5      " U5      n[	        S U R                  5        5       5      [	        S UR                  5        5       5      :H  $ )NrR   Fc              3   J   #    U  H  u  pUR                  5       U4v   M     g 7fr
   rc   .0kvs      r   	<genexpr>(HTTPHeaderDict.__eq__.<locals>.<genexpr>   s     A/@tqQWWYN/@   !#c              3   J   #    U  H  u  pUR                  5       U4v   M     g 7fr
   rt   ru   s      r   ry   rz      s!      J
'9tqQWWYN'9r{   )rZ   r   hasattrtypedict
itermergedr   others     r   __eq__HTTPHeaderDict.__eq__   s|    %))'%2H2H%d,,Ju%EAt/@AAT J
','7'7'9J
 F
 
 	
r   c                 .    U R                  U5      (       + $ r
   )r   r   s     r   __ne__HTTPHeaderDict.__ne__   s    ;;u%%%r   c                 ,    [        U R                  5      $ r
   )r;   r,   r   s    r   rF   HTTPHeaderDict.__len__   s    4??##r   c              #   \   #    U R                   R                  5        H
  nUS   v   M     g 7f)Nr   )r,   rO   )r   valss     r   rJ   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 the corresponding value.
If key is not found, d is returned if given, otherwise KeyError is raised.
)KeyError_HTTPHeaderDict__marker)r   r3   defaultr=   s       r   r2   HTTPHeaderDict.pop   s=    	IE 	L  	--'N	s   
 ((c                 *     X	 g ! [          a     g f = fr
   )r   rm   s     r   discardHTTPHeaderDict.discard   s    		 		s    
c                     UR                  5       nX/nU R                  R                  X45      nXELa  UR                  U5        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'
N)rc   r,   
setdefaultappend)r   r3   re   	key_lowernew_valsr   s         r   addHTTPHeaderDict.add   sA     IIK	:)))>KK  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   z9extend() takes at most 1 positional arguments ({0} given)r   r   rR   N)r;   	TypeErrorformatrZ   r%   	iteritemsr   r   r}   rR   items)r   argsr^   r   r3   re   r=   s          r   r\   HTTPHeaderDict.extend   s    
 t9q=((.s4y(9  t9>Qre^,,!OO-" .w''Cj) UF##zz|Cj) $ $
$ $ !,,.JCHHS  )r   c                      U R                   UR                  5          nUSS $ ! [         a    X R                  L a  / s $ U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,   rc   r   r   )r   r3   r   r   s       r   getlistHTTPHeaderDict.getlist  sM    	??399;/D 8O  	--'	N	s   $ A AAc                 B    / SQnU H  nU R                  U5        M     U $ )z~
Remove content-specific header fields before changing the request
method to GET or HEAD according to RFC 9110, Section 15.4.
)zContent-EncodingzContent-LanguagezContent-LocationzContent-TypezContent-LengthDigestzLast-Modified)r   )r   content_specific_headersheaders      r   _prepare_for_method_change)HTTPHeaderDict._prepare_for_method_change  s'    
$
  /FLL  /r   c                 j    [        U 5      R                  < S[        U R                  5       5      < S3$ )N())r~   r   r   r   r   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
   )r   rZ   rM   r,   rc   )r   r   r3   re   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
   )r~   r[   )r   clones     r   copyHTTPHeaderDict.copy4  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   rb   )r   r3   r   re   s       r   r   HTTPHeaderDict.iteritems9  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   rh   r   Nri   rd   s      r   r   HTTPHeaderDict.itermerged@  sA     C//#))+.Ca&$))CG,,, s   AAc                 4    [        U R                  5       5      $ r
   )rM   r   r   s    r   r   HTTPHeaderDict.itemsF  s    DNN$%%r   c                 D   Sn/ nUR                    H  nUR                  U5      (       a8  U(       d  [        SU-  5      eUS   u  pVXVS-   UR                  5       -   4US'   MQ  UR	                  SS5      u  pVUR                  XVR                  5       45        M     U " U5      $ )z4Read headers from a Python 2 httplib message object.) 	z/Header continuation with no previous header: %sr   :r   )r]   
startswithr    stripsplitr   )clsmessageobs_fold_continued_leadersr]   liner3   r=   s          r   from_httplibHTTPHeaderDict.from_httplibI  s     &1"OOD9:: (IDP  ")JC#&djjl(B"CGBKC+JCNNC/0 $" 7|r   )r,   r
   ))r   r   r   r   rU   r/   r@   r5   rC   rp   r   r   r!   PY2r   r"   r#   objectr   rF   rJ   r2   r   r   r\   r   r   
getheadersgetallmatchingheadersigetget_allr   r[   r   r   r   r   classmethodr   r   __classcell__)r_   s   @r   r%   r%   k   s    B	 ,").
& ww!**#..
xH$
  ( " !8 $, 
& J#D GI7
#-&  r   N)
__future__r   collections.abcr   r   ImportErrorcollections	threadingr   r   
exceptionsr    packagesr!   packages.sixr"   r#   __all__r   r9   r$   r%   r   r   r   <module>r      s    &47	 $ %  ."$4
5 	I3N I3Xx^ xM  4334   s"   A A' A$#A$'A:9A: