
^V                 @   sE   d  Z  d d l Z Gd d   d e j  Z Gd d   d e  Z d S)zP
requests.structures
~~~~~~~~~~~~~~~~~~~

Data structures that power Requests.

    Nc               @   s   e  Z d  Z d Z 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 d S)CaseInsensitiveDicta  
    A case-insensitive ``dict``-like object.

    Implements all methods and operations of
    ``collections.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.

    Nc             K   s5   t    |  _ | d  k r! i  } n  |  j | |  d  S)N)dict_storeupdate)selfdatakwargs r	   >/tmp/pip-build-9m6vxulb/pip/pip/_vendor/requests/structures.py__init__*   s    	zCaseInsensitiveDict.__init__c             C   s   | | f |  j  | j   <d  S)N)r   lower)r   keyvaluer	   r	   r
   __setitem__0   s    zCaseInsensitiveDict.__setitem__c             C   s   |  j  | j   d S)N   )r   r   )r   r   r	   r	   r
   __getitem__5   s    zCaseInsensitiveDict.__getitem__c             C   s   |  j  | j   =d  S)N)r   r   )r   r   r	   r	   r
   __delitem__8   s    zCaseInsensitiveDict.__delitem__c             C   s   d d   |  j  j   D S)Nc             s   s   |  ] \ } } | Vq d  S)Nr	   ).0casedkeymappedvaluer	   r	   r
   	<genexpr><   s    z/CaseInsensitiveDict.__iter__.<locals>.<genexpr>)r   values)r   r	   r	   r
   __iter__;   s    zCaseInsensitiveDict.__iter__c             C   s   t  |  j  S)N)lenr   )r   r	   r	   r
   __len__>   s    zCaseInsensitiveDict.__len__c             C   s   d d   |  j  j   D S)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   D   s   z2CaseInsensitiveDict.lower_items.<locals>.<genexpr>)r   items)r   r	   r	   r
   lower_itemsA   s    	zCaseInsensitiveDict.lower_itemsc             C   sG   t  | t j  r! t |  } n t St |  j    t | j    k S)N)
isinstancecollectionsMappingr   NotImplementedr   r   )r   otherr	   r	   r
   __eq__I   s    zCaseInsensitiveDict.__eq__c             C   s   t  |  j j    S)N)r   r   r   )r   r	   r	   r
   copyR   s    zCaseInsensitiveDict.copyc             C   s   t  t |  j     S)N)strr   r   )r   r	   r	   r
   __repr__U   s    zCaseInsensitiveDict.__repr__)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r$   r%   r'   r	   r	   r	   r
   r      s   	r   c                   sR   e  Z d  Z d Z d   f d d  Z d d   Z d d   Z d d	 d
  Z   S)
LookupDictzDictionary lookup object.Nc                s    | |  _  t t |   j   d  S)N)namesuperr,   r   )r   r-   )	__class__r	   r
   r   [   s    	zLookupDict.__init__c             C   s   d |  j  S)Nz<lookup '%s'>)r-   )r   r	   r	   r
   r'   _   s    zLookupDict.__repr__c             C   s   |  j  j | d   S)N)__dict__get)r   r   r	   r	   r
   r   b   s    zLookupDict.__getitem__c             C   s   |  j  j | |  S)N)r0   r1   )r   r   defaultr	   r	   r
   r1   g   s    zLookupDict.get)r(   r)   r*   r+   r   r'   r   r1   r	   r	   )r/   r
   r,   X   s
   r,   )r+   r    MutableMappingr   r   r,   r	   r	   r	   r
   <module>	   s   J