
    1j&                        d Z ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z
mZmZmZ ddlmZ  ed      Z ed	      Z G d
 deeef   ee         Z G d deeef         Zy)zO
requests.structures
~~~~~~~~~~~~~~~~~~~

Data structures that power Requests.
    )annotations)OrderedDict)IterableIteratorMapping)AnyGenericTypeVaroverload   )MutableMapping_VT_Dc                  z    e Zd ZU dZded<   	 d	 	 	 	 	 ddZddZddZddZdd	Z	dd
Z
ddZddZddZddZy)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.
    z!OrderedDict[str, tuple[str, _VT]]_storeNc                P    t               | _        |i } | j                  |fi | y N)r   r   update)selfdatakwargss      G/home/qreelify/venv/lib/python3.12/site-packages/requests/structures.py__init__zCaseInsensitiveDict.__init__1   s*    
 "m<DD#F#    c                B    ||f| j                   |j                         <   y r   r   lower)r   keyvalues      r   __setitem__zCaseInsensitiveDict.__setitem__;   s     %(<CIIK r   c                B    | j                   |j                            d   S )Nr   r   r   r   s     r   __getitem__zCaseInsensitiveDict.__getitem__@   s    {{399;'**r   c                :    | j                   |j                         = y r   r   r#   s     r   __delitem__zCaseInsensitiveDict.__delitem__C   s    KK		$r   c                D    d | j                   j                         D        S )Nc              3  &   K   | ]	  \  }}|  y wr    ).0casedkey_s      r   	<genexpr>z/CaseInsensitiveDict.__iter__.<locals>.<genexpr>G   s     A[XqAs   )r   valuesr   s    r   __iter__zCaseInsensitiveDict.__iter__F   s    ADKK,>,>,@AAr   c                ,    t        | j                        S r   )lenr   r/   s    r   __len__zCaseInsensitiveDict.__len__I   s    4;;r   c                D    d | j                   j                         D        S )z.Like iteritems(), but with all lowercase keys.c              3  0   K   | ]  \  }}||d    f  yw)r   Nr)   )r*   lowerkeykeyvals      r   r-   z2CaseInsensitiveDict.lower_items.<locals>.<genexpr>N   s     T*<8V6!9%Ts   )r   itemsr/   s    r   lower_itemszCaseInsensitiveDict.lower_itemsL   s    T@Q@Q@STTr   c                    t        |t              rt        |      }nt        S t	        | j                               t	        |j                               k(  S r   )
isinstancer   r   NotImplementeddictr9   )r   other
other_dicts      r   __eq__zCaseInsensitiveDict.__eq__P   sC    eW%3Fu3MJ!!D$$&'4
0F0F0H+IIIr   c                H    t        | j                  j                               S r   )r   r   r.   r/   s    r   copyzCaseInsensitiveDict.copyY   s    "4;;#5#5#788r   c                F    t        t        | j                                     S r   )strr=   r8   r/   s    r   __repr__zCaseInsensitiveDict.__repr__\   s    4

%&&r   r   )r   z4Mapping[str, _VT] | Iterable[tuple[str, _VT]] | Noner   r   returnNone)r   rD   r    r   rF   rG   )r   rD   rF   r   )r   rD   rF   rG   )rF   zIterator[str])rF   int)rF   zIterator[tuple[str, _VT]])r>   objectrF   bool)rF   zCaseInsensitiveDict[_VT]rF   rD   )__name__
__module____qualname____doc____annotations__r   r!   r$   r&   r0   r3   r9   r@   rB   rE   r)   r   r   r   r      sg    4 .- FJ$B$ $ 
	$0
+%B UJ9'r   r   c                  z     e Zd ZU dZded<   dd fdZddZddZddZe	ddd       Z
e	dd	       Z
ddd
Z
 xZS )
LookupDictzDictionary lookup object.r   namec                0    || _         t        | 	          y r   )rS   superr   )r   rS   	__class__s     r   r   zLookupDict.__init__e   s    	r   c                "    d| j                    dS )Nz	<lookup 'z'>)rS   r/   s    r   rE   zLookupDict.__repr__i   s    499+R((r   c                    || j                   v r| j                   |   S t        dt        |       j                   d| d      )N'z' object has no attribute ')__dict__AttributeErrortyperL   r#   s     r   __getattr__zLookupDict.__getattr__l   sJ     $--==%% DJ''((CC5J r   c                :    | j                   j                  |d       S r   rZ   getr#   s     r   r$   zLookupDict.__getitem__v   s     }}  d++r   c                     y r   r)   r   r   defaults      r   r`   zLookupDict.get{   s    ADr   c                     y r   r)   rb   s      r   r`   zLookupDict.get~   s    <?r   c                :    | j                   j                  ||      S r   r_   rb   s      r   r`   zLookupDict.get   s    }}  g..r   r   )rS   r   rF   rG   rK   )r   rD   rF   
_VT | None)r   rD   rc   rG   rF   rf   )r   rD   rc   _D | _VTrF   rg   )r   rD   rc   z	_D | NonerF   z_VT | _D | None)rL   rM   rN   rO   rP   r   rE   r]   r$   r   r`   __classcell__)rV   s   @r   rR   rR   `   sG    #
I),
 D D? ?/ /r   rR   N)rO   
__future__r   collectionsr   collections.abcr   r   r   typingr   r	   r
   r   compatr   r   r   rD   r   r=   rR   r)   r   r   <module>rn      se    # # 7 7 2 2 "enT]I'.c2GCL I'X"/c3h "/r   