
    iN$                       d Z ddlmZ ddlZddlZddlmZmZ 	 ddlm	Z	 e	sddl
mZ nddlmZ n'# e$ r ddlmZ  ed	
          d"d            ZY nw xY wddlmZ d#dZ ej        d          Z G d de          Z G d de          Z G d dej                  Z G d de          Z G d de          Z G d  d!          ZdS )$zO
requests.structures
~~~~~~~~~~~~~~~~~~~

Data structures that power Requests.
    )annotationsN)MappingMutableMapping   )HAS_LEGACY_URLLIB3)_lower_wrapper)	lru_cache@   )maxsizestringstrreturnc                *    |                                  S )backport)lower)r   s    N/root/projects/butler/venv/lib/python3.11/site-packages/niquests/structures.pyr   r      s     ||~~    )InvalidHeaderkey
typing.Anyvaluetuple[bytes | str, bytes | str]c                x   t          | t          t          f          r t          |t          t          f          r| |fS t          |t          t          f          rt          |          }t          | t          t          f          du s |0t          |t          t          f          du rt          d|            | |fS )NFzIllegal header name or value )
isinstancebytesr   floatintr   )r   r   s     r   _ensure_str_or_bytesr   #   s    #s|$$ EE3<)H)H Ez	
   E

#s|$$--%2C
SX[`beZfHgHgkpHpHpACAABBB:r   _Tc                       e Zd ZdZd$d%dZd&d	Zd'dZej        d(d            Z	ej        d)d            Z	ej        d*d            Z	d$d+ fdZ	d%dZ
d,dZd-dZd.dZd Zd/dZd0dZd1d!Zd2d#Z xZS )3CaseInsensitiveDicta  A case-insensitive ``dict``-like object.

    Implements all methods and operations of
    ``MutableMapping`` as well as dict's ``copy``. Also
    provides ``lower_items``.

    All keys are expected to be strings. The structure remembers the
    case of the last key to be set, and ``iter(instance)``,
    ``keys()``, ``items()``, ``iterkeys()``, and ``iteritems()``
    will contain case-sensitive keys. However, querying and contains
    testing is case insensitive::

        cid = CaseInsensitiveDict()
        cid['Accept'] = 'application/json'
        cid['aCCEPT'] == 'application/json'  # True
        list(cid) == ['Accept']  # True

    For example, ``headers['content-encoding']`` will return the
    value of a ``'Content-Encoding'`` response header, regardless
    of how the header name was originally stored.

    If the constructor, ``.update``, or equality comparison
    operations are given keys that have equal ``.lower()``s, the
    behavior is undefined.
    Nr   Nonec                b   i | _         |i }t          |d          r |j                                        | _         d S t	          |t
                    r |j                                         | _         d S |s|r:t          |d          r | j        |fi | d S  | j        d |D             fi | d S d S )Ngetlistitemsc                    i | ]\  }}||	S  r'   ).0kvs      r   
<dictcomp>z0CaseInsensitiveDict.__init__.<locals>.<dictcomp>a   s    ///$!QA///r   )_storehasattr
_containercopyr   r!   update)selfdatakwargss      r   __init__zCaseInsensitiveDict.__init__Q   s    LN<D 4## 	/..00DKKK122 
	+**,,DKKK v 4)) DK///////DK//$///      	 r   r   str | bytesr   c                P    t          ||          | j        t          |          <   d S N)r   r,   r   r1   r   r   s      r   __setitem__zCaseInsensitiveDict.__setitem__e   s)     ,@U+K+KN3''(((r   bytes | strc                   | j         t          |                   }t          |          dk    r|d         S 	 t          |d         t                    rd                    |dd                    nd                    |dd                    S # t          $ r* d                    d |dd          D                       cY S w xY w)N   r   , s   , c              3  l   K   | ]/}t          |t                    r|                                n|V  0d S r7   r   r   decoder(   r*   s     r   	<genexpr>z2CaseInsensitiveDict.__getitem__.<locals>.<genexpr>r   s=      VV1:a+?+?FQXXZZZQVVVVVVr   )r,   r   lenr   r   join	TypeError)r1   r   es      r   __getitem__zCaseInsensitiveDict.__getitem__j   s    Ks++,q66Q;;Q4K	W'1!A$'<'<S499QqrrU###%**QqrrUBSBSS 	W 	W 	W99VVPQRSRTRTPUVVVVVVVV	Ws   AB 1C ?C str | bytes | Nonec                    d S r7   r'   r1   r   s     r   getzCaseInsensitiveDict.gett   s    ;>3r   defaultc                    d S r7   r'   r1   r   rL   s      r   rK   zCaseInsensitiveDict.getw   s    JM#r   r   str | bytes | _Tc                    d S r7   r'   rN   s      r   rK   zCaseInsensitiveDict.getz   s    FIcr   str | bytes | _T | Nonec                J    t                                          ||          S )N)rL   )superrK   )r1   r   rL   	__class__s      r   rK   zCaseInsensitiveDict.get}   s    ww{{3{000r   c                0    | j         t          |          = d S r7   )r,   r   rJ   s     r   __delitem__zCaseInsensitiveDict.__delitem__   s    Ks++,,,r   typing.Iterator[str | bytes]c              #  H   K   | j         D ]}| j         |         d         V  d S )Nr   )r,   )r1   key_cis     r   __iter__zCaseInsensitiveDict.__iter__   s<      k 	) 	)F+f%a(((((	) 	)r   r   c                *    t          | j                  S r7   )rC   r,   r1   s    r   __len__zCaseInsensitiveDict.__len__   s    4;r   0typing.Iterator[tuple[bytes | str, bytes | str]]c                H    d | j                                         D             S )z.Like iteritems(), but with all lowercase keys.c              3  0   K   | ]\  }}||d          fV  dS )r   Nr'   )r(   lowerkeykeyvals      r   rB   z2CaseInsensitiveDict.lower_items.<locals>.<genexpr>   s0      TT*<8V6!9%TTTTTTr   )r,   r%   r\   s    r   lower_itemszCaseInsensitiveDict.lower_items   s$    TT@Q@Q@S@STTTTr   c           	   #  T  K   | j         D ]}| j         |         }t          |          dk    rt          |          V  4	 |d         d                    |dd                    fV  ]# t          $ r4 |d         d                    d |dd          D                       fV  Y w xY wd S )Nr<   r   r=   r   c              3  l   K   | ]/}t          |t                    r|                                n|V  0d S r7   r?   rA   s     r   rB   z,CaseInsensitiveDict.items.<locals>.<genexpr>   s>      ![![PQ
1e0D0D"K!((***!![![![![![![r   )r,   rC   tuplerD   rE   )r1   r)   ts      r   r%   zCaseInsensitiveDict.items   s       	 	AAA1vv{{AhhA$		!ABB% 0 000000    !		![![UVWXWYWYUZ![![![[[     	 	s   'A'';B%$B%boolc                    t          |t                    rt          |          }nt          S t	          |                                           t	          |                                          k    S r7   )r   r   r!   NotImplementeddictrc   )r1   others     r   __eq__zCaseInsensitiveDict.__eq__   s\    eW%% 	"'..EE!!D$$&&''40A0A0C0C+D+DDDr   c                     t          |           S r7   )r!   r\   s    r   r/   zCaseInsensitiveDict.copy   s    "4(((r   r   c                ^    t          t          |                                                     S r7   )r   rk   r%   r\   s    r   __repr__zCaseInsensitiveDict.__repr__   s     4

%%&&&r   itemc                .    t          |          | j        v S r7   )r   r,   r1   rq   s     r   __contains__z CaseInsensitiveDict.__contains__   s    d##t{22r   r7   r   r"   )r   r5   r   r5   r   r"   )r   r:   )r   r5   r   rH   )r   r5   rL   r5   r   r5   )r   r5   rL   r   r   rO   )r   r5   rL   rQ   r   rQ   )r   rW   r   r   )r   r^   )r   rh   )r   r!   )r   r   )rq   r   r   rh   )__name__
__module____qualname____doc__r4   r9   rG   typingoverloadrK   rV   rZ   r]   rc   r%   rm   r/   rp   rt   __classcell__rT   s   @r   r!   r!   6   s        4    (L L L L
W W W W _>>> _>_MMM _M_III _I1 1 1 1 1 1 1- - - -) ) ) )       U U U U  E E E E) ) ) )' ' ' '3 3 3 3 3 3 3 3r   r!   c                  :     e Zd ZdZd	d
 fdZd Zd Zd	dZ xZS )
LookupDictzDictionary lookup object.Nr   r"   c                V    || _         t                                                       d S r7   )namerS   r4   )r1   r   rT   s     r   r4   zLookupDict.__init__   s&     $	r   c                    d| j          dS )Nz	<lookup 'z'>)r   r\   s    r   rp   zLookupDict.__repr__   s    (49((((r   c                8    | j                             |d           S r7   __dict__rK   rJ   s     r   rG   zLookupDict.__getitem__   s    }  d+++r   c                8    | j                             ||          S r7   r   rN   s      r   rK   zLookupDict.get   s    }  g...r   r7   ru   )	rw   rx   ry   rz   r4   rp   rG   rK   r}   r~   s   @r   r   r      sz        ##      ) ) ), , ,/ / / / / / / /r   r   c                  J    e Zd ZddZddZdd	Zdd
ZddZddZd Z	d Z
dS )SharableLimitedDictmax_size
int | Noner   r"   c                R    i | _         || _        t          j                    | _        d S r7   )r,   	_max_size	threadingRLock_lock)r1   r   s     r   r4   zSharableLimitedDict.__init__   s#    EG!2;/2C2C


r   dict[str, typing.Any]c                     | j         | j        dS )Nr,   r   r   r\   s    r   __getstate__z SharableLimitedDict.__getstate__   s    +DNCCCr   statec                j    t          j                    | _        |d         | _        |d         | _        d S Nr,   r   )r   r   r   r,   r   r1   r   s     r   __setstate__z SharableLimitedDict.__setstate__   s,    _&&
Ho{+r   c                V    | j         5  | j        |= d d d            d S # 1 swxY w Y   d S r7   r   r,   )r1   _SharableLimitedDict__keys     r   rV   zSharableLimitedDict.__delitem__   sx    Z 	# 	#E"	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   	""r   c                l    | j         5  t          | j                  cd d d            S # 1 swxY w Y   d S r7   )r   rC   r,   r\   s    r   r]   zSharableLimitedDict.__len__   s{    Z 	$ 	$t{##	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$   )--typing.Iteratorc                l    | j         5  t          | j                  cd d d            S # 1 swxY w Y   d S r7   )r   iterr,   r\   s    r   rZ   zSharableLimitedDict.__iter__   s{    Z 	% 	%$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%r   c                    | j         5  | j        r6t          | j                  | j        k    r| j                                         || j        |<   d d d            d S # 1 swxY w Y   d S r7   )r   r   rC   r,   popitemr8   s      r   r9   zSharableLimitedDict.__setitem__   s    Z 	% 	%~ &#dk"2"2dn"D"D##%%%$DK		% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   AAA!$A!c                ^    | j         5  | j        |         cd d d            S # 1 swxY w Y   d S r7   r   rs   s     r   rG   zSharableLimitedDict.__getitem__   sx    Z 	% 	%;t$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   "&&Nr   r   r   r"   )r   r   r   r   r   r"   ru   rv   )r   r   )rw   rx   ry   r4   r   r   rV   r]   rZ   r9   rG   r'   r   r   r   r      s        D D D D
D D D D, , , ,
# # # #$ $ $ $% % % %% % %% % % % %r   r   c                  :     e Zd Zd fdZdddZdddZd Z xZS )QuicSharedCacher   r   r   r"   c                X    t                                          |           i | _        d S r7   )rS   r4   _exclusion_storer1   r   rT   s     r   r4   zQuicSharedCache.__init__   s)    """OQr   Nhostr   portalt_portc                (    |d}||}||f| ||f<   d S Ni  r'   r1   r   r   r   s       r   
add_domainzQuicSharedCache.add_domain   s0    <DH"H-dD\r   c                2    |d}||}||f| j         ||f<   d S r   )r   r   s       r   exclude_domainzQuicSharedCache.exclude_domain   s3    <DH/3X.>tTl+++r   c                   | j         5  || j        v r	 d d d            d S | j        r6t          | j                  | j        k    r| j                                         || j        |<   d d d            d S # 1 swxY w Y   d S r7   )r   r   r   rC   r,   r   r8   s      r   r9   zQuicSharedCache.__setitem__   s    Z 	% 	%d+++	% 	% 	% 	% 	% 	% 	% 	% ~ &#dk"2"2dn"D"D##%%%$DK	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   A4AA44A8;A8r   )NN)r   r   r   r   r   r   r   r"   )r   r   r   r   r   r   )rw   rx   ry   r4   r   r   r9   r}   r~   s   @r   r   r      s        R R R R R R. . . . .? ? ? ? ?% % % % % % %r   r   c                  (     e Zd Zd	 fdZd
dZ xZS )AsyncQuicSharedCacher   r   r   r"   c                p    t                                          |           t                      | _        d S r7   )rS   r4   	DummyLockr   r   s     r   r4   zAsyncQuicSharedCache.__init__  s*    """[[


r   r   r   c                `    t                      | _        |d         | _        |d         | _        d S r   )r   r   r,   r   r   s     r   r   z!AsyncQuicSharedCache.__setstate__
  s(    [[
Ho{+r   r   r   )rw   rx   ry   r4   r   r}   r~   s   @r   r   r     sQ        ! ! ! ! ! !, , , , , , , ,r   r   c                  &    e Zd Zd Zd Zd Zd ZdS )r   c                    | S r7   r'   r\   s    r   	__enter__zDummyLock.__enter__  s    r   c                    d S r7   r'   )r1   exc_typeexc_valexc_tbs       r   __exit__zDummyLock.__exit__      r   c                    d S r7   r'   r\   s    r   acquirezDummyLock.acquire  r   r   c                    d S r7   r'   r\   s    r   releasezDummyLock.release  r   r   N)rw   rx   ry   r   r   r   r   r'   r   r   r   r     sP                  r   r   )r   r   r   r   )r   r   r   r   r   r   )rz   
__future__r   r   r{   collections.abcr   r   _compatr   urllib3._collectionsr   urllib3_future._collectionsImportError	functoolsr	   
exceptionsr   r   TypeVarr   r!   rk   r   r   r   r   r   r'   r   r   <module>r      sU    # " " " " "      3 3 3 3 3 3 3 3++++++ 
7777777	
 	
 	
 	
 	
 	
    ######Yr     	 & % % % % %     V^Dv3 v3 v3 v3 v3. v3 v3 v3r/ / / / / / / /$#% #% #% #% #%&/ #% #% #%L% % % % %) % % %<, , , , ,? , , ,         s   0 !AA