o
    ì6Wj&  ã                   @  sž   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„ deeef ee ƒZG dd„ deeef ƒZdS )zO
requests.structures
~~~~~~~~~~~~~~~~~~~

Data structures that power Requests.
é    )Úannotations)ÚOrderedDict)ÚIterableÚIteratorÚMapping)ÚAnyÚGenericÚTypeVarÚoverloadé   )ÚMutableMappingÚ_VTÚ_Dc                   @  s‚   e Zd ZU dZded< 	d)d*dd„Zd+dd„Zd,dd„Zd-dd„Zd.dd„Z	d/dd„Z
d0dd„Zd1d"d#„Zd2d%d&„Zd3d'd(„ZdS )4Ú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]]Ú_storeNÚdataú4Mapping[str, _VT] | Iterable[tuple[str, _VT]] | NoneÚkwargsr   ÚreturnÚNonec                 K  s*   t ƒ | _|d u r
i }| j|fi |¤Ž d S ©N)r   r   Úupdate)Úselfr   r   © r   úb/home/esfera/Documents/content_generation/venv/lib/python3.10/site-packages/requests/structures.pyÚ__init__1   s   zCaseInsensitiveDict.__init__ÚkeyÚstrÚvaluec                 C  s   ||f| j | ¡ < d S r   ©r   Úlower)r   r   r   r   r   r   Ú__setitem__;   s   zCaseInsensitiveDict.__setitem__c                 C  s   | j | ¡  d S )Nr   r   ©r   r   r   r   r   Ú__getitem__@   s   zCaseInsensitiveDict.__getitem__c                 C  s   | j | ¡ = d S r   r   r"   r   r   r   Ú__delitem__C   ó   zCaseInsensitiveDict.__delitem__úIterator[str]c                 C  ó   dd„ | j  ¡ D ƒS )Nc                 s  s   � | ]\}}|V  qd S r   r   )Ú.0ÚcasedkeyÚ_r   r   r   Ú	<genexpr>G   s   € z/CaseInsensitiveDict.__iter__.<locals>.<genexpr>)r   Úvalues©r   r   r   r   Ú__iter__F   s   zCaseInsensitiveDict.__iter__Úintc                 C  s
   t | jƒS r   )Úlenr   r-   r   r   r   Ú__len__I   s   
zCaseInsensitiveDict.__len__úIterator[tuple[str, _VT]]c                 C  r'   )z.Like iteritems(), but with all lowercase keys.c                 s  s    � | ]\}}||d  fV  qdS )r   Nr   )r(   ÚlowerkeyÚkeyvalr   r   r   r+   N   s   € z2CaseInsensitiveDict.lower_items.<locals>.<genexpr>)r   Úitemsr-   r   r   r   Úlower_itemsL   s   zCaseInsensitiveDict.lower_itemsÚotherÚobjectÚboolc                 C  s0   t |tƒr
t|ƒ}ntS t|  ¡ ƒt| ¡ ƒkS r   )Ú
isinstancer   r   ÚNotImplementedÚdictr6   )r   r7   Ú
other_dictr   r   r   Ú__eq__P   s   

zCaseInsensitiveDict.__eq__úCaseInsensitiveDict[_VT]c                 C  s   t | j ¡ ƒS r   )r   r   r,   r-   r   r   r   ÚcopyY   ó   zCaseInsensitiveDict.copyc                 C  s   t t|  ¡ ƒƒS r   )r   r<   r5   r-   r   r   r   Ú__repr__\   r%   zCaseInsensitiveDict.__repr__r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r&   )r   r/   )r   r2   )r7   r8   r   r9   )r   r?   ©r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r!   r#   r$   r.   r1   r6   r>   r@   rB   r   r   r   r   r      s   
 þ








	r   c                      sv   e Zd ZU dZded< dd‡ fdd„Zdd
d„Zddd„Zddd„Ze	dddd„ƒZ
e	ddd„ƒZ
dd dd„Z
‡  ZS )!Ú
LookupDictzDictionary lookup object.r   ÚnameNr   r   c                   s   || _ tƒ  ¡  d S r   )rJ   Úsuperr   )r   rJ   ©Ú	__class__r   r   r   e   s   zLookupDict.__init__r   c                 C  s   d| j › d�S )Nz	<lookup 'z'>)rJ   r-   r   r   r   rB   i   rA   zLookupDict.__repr__r   ú
_VT | Nonec                 C  s0   || j v r
| j | S tdt| ƒj› d|› d�ƒ‚)Nú'z' object has no attribute ')Ú__dict__ÚAttributeErrorÚtyperD   r"   r   r   r   Ú__getattr__l   s
   

ÿzLookupDict.__getattr__c                 C  s   | j  |d ¡S r   ©rP   Úgetr"   r   r   r   r#   v   s   zLookupDict.__getitem__Údefaultc                 C  ó   d S r   r   ©r   r   rV   r   r   r   rU   {   ó   zLookupDict.getú_D | _VTc                 C  rW   r   r   rX   r   r   r   rU   ~   rY   ú	_D | Noneú_VT | _D | Nonec                 C  s   | j  ||¡S r   rT   rX   r   r   r   rU   �   rA   r   )rJ   r   r   r   rC   )r   r   r   rN   )r   r   rV   r   r   rN   )r   r   rV   rZ   r   rZ   )r   r   rV   r[   r   r\   )rD   rE   rF   rG   rH   r   rB   rS   r#   r
   rU   Ú__classcell__r   r   rL   r   rI   `   s   
 



rI   N)rG   Ú
__future__r   Úcollectionsr   Úcollections.abcr   r   r   Útypingr   r   r	   r
   Úcompatr   r   r   r   r   r<   rI   r   r   r   r   Ú<module>   s    L