o
    .j                     @  s   d dl mZ d dlmZ d dlmZmZ d dlmZm	Z	m
Z
mZmZ d dlmZ ddlmZ 	 G dd	 d	eZee
ee  e
e f Zeeef Zd
S )    )annotations)OrderedDict)MappingMutableMapping)AnyIteratorListOptionalTuple)r      )normalize_strc                   @  sv   e Zd ZdZ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	d*ddZ
d,dd Zd-d!d"Zd.d#d$ZdS )/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.
    NdataMapping | Nonekwargsr   c                 K  s*   t  | _|d u r
i }| j|fi | d S N)r   _storeupdate)selfr   r    r   ]/home/thesage/.local/lib/python3.10/site-packages/niquests/_vendor/kiss_headers/structures.py__init__3   s   zCaseInsensitiveDict.__init__keystrvaluereturnNonec                 C  s   ||f| j t|< d S r   r   r   )r   r   r   r   r   r   __setitem__9   s   zCaseInsensitiveDict.__setitem__c                 C  s   | j t| d S )Nr   r   r   r   r   r   r   __getitem__>      zCaseInsensitiveDict.__getitem__c                 C  s   | j t|= d S r   r   r   r   r   r   __delitem__A      zCaseInsensitiveDict.__delitem__Iterator[tuple[str, Any]]c                 C     dd | j  D S )Nc                 s  s    | ]\}}|V  qd S r   r   ).0casedkeymappedvaluer   r   r   	<genexpr>E   s    z/CaseInsensitiveDict.__iter__.<locals>.<genexpr>)r   valuesr   r   r   r   __iter__D   s   zCaseInsensitiveDict.__iter__intc                 C  s
   t | jS r   )lenr   r+   r   r   r   __len__G   s   
zCaseInsensitiveDict.__len__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)   L   s    z2CaseInsensitiveDict.lower_items.<locals>.<genexpr>)r   itemsr+   r   r   r   lower_itemsJ   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dictr3   )r   r4   r   r   r   __eq__N   s   

zCaseInsensitiveDict.__eq__c                 C  s   t t| j S r   )r   r9   r   r*   r+   r   r   r   copyW   r!   zCaseInsensitiveDict.copyc                 C  s   t t|  S r   )r   r9   r2   r+   r   r   r   __repr__Z   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-   )r4   r5   r   r6   )r   r   )r   r   )__name__
__module____qualname____doc__r   r   r    r"   r,   r/   r3   r:   r;   r<   r   r   r   r   r      s    







	r   N)
__future__r   collectionsr   collections.abcr   r   typingr   r   r   r	   r
   MutableMappingTypeutilsr   r   r   r-   AttributeDescriptionAttributeBagr   r   r   r   <module>   s    F