
R\                 @   sw   d  Z  d d l Z d d l Z d d l m Z Gd d   d e  Z Gd d   d e j  Z Gd d	   d	 e	  Z
 d S)
zP
requests.structures
~~~~~~~~~~~~~~~~~~~

Data structures that power Requests.

    N)islicec               @   sF   e  Z d  Z d Z d d   Z d d   Z d d   Z d d	   Z d
 S)IteratorProxyzdocstring for IteratorProxyc             C   s   | |  _  d  S)N)i)selfr    r   B/var/www/dbchiro/venv/build/pip/pip/_vendor/requests/structures.py__init__   s    zIteratorProxy.__init__c             C   s   |  j  S)N)r   )r   r   r   r   __iter__   s    zIteratorProxy.__iter__c             C   sj   t  |  j d  r t |  j  St  |  j d  r; |  j j St  |  j d  rf t j |  j j    j Sd  S)N__len__lenfileno)hasattrr   r   osfstatr   st_size)r   r   r   r   r
      s    
zIteratorProxy.__len__c             C   s   d j  t |  j d  |   S)N )joinr   r   )r   nr   r   r   read!   s    zIteratorProxy.readN)__name__
__module____qualname____doc__r   r	   r
   r   r   r   r   r   r      s
   r   c               @   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)r   datakwargsr   r   r   r   A   s    	zCaseInsensitiveDict.__init__c             C   s   | | f |  j  | j   <d  S)N)r   lower)r   keyvaluer   r   r   __setitem__G   s    zCaseInsensitiveDict.__setitem__c             C   s   |  j  | j   d S)N   )r   r   )r   r    r   r   r   __getitem__L   s    zCaseInsensitiveDict.__getitem__c             C   s   |  j  | j   =d  S)N)r   r   )r   r    r   r   r   __delitem__O   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   s    z/CaseInsensitiveDict.__iter__.<locals>.<genexpr>)r   values)r   r   r   r   r	   R   s    zCaseInsensitiveDict.__iter__c             C   s   t  |  j  S)N)r   r   )r   r   r   r   r
   U   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)   [   s   z2CaseInsensitiveDict.lower_items.<locals>.<genexpr>)r   items)r   r   r   r   lower_itemsX   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__`   s    zCaseInsensitiveDict.__eq__c             C   s   t  |  j j    S)N)r   r   r*   )r   r   r   r   copyi   s    zCaseInsensitiveDict.copyc             C   s    d |  j  j t |  j    f S)Nz%s(%r))	__class__r   r   r-   )r   r   r   r   __repr__l   s    zCaseInsensitiveDict.__repr__)r   r   r   r   r   r"   r$   r%   r	   r
   r.   r4   r5   r7   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superr8   r   )r   r9   )r6   r   r   r   s   s    	zLookupDict.__init__c             C   s   d |  j  S)Nz<lookup '%s'>)r9   )r   r   r   r   r7   w   s    zLookupDict.__repr__c             C   s   |  j  j | d   S)N)__dict__get)r   r    r   r   r   r$   z   s    zLookupDict.__getitem__c             C   s   |  j  j | |  S)N)r;   r<   )r   r    defaultr   r   r   r<      s    zLookupDict.get)r   r   r   r   r   r7   r$   r<   r   r   )r6   r   r8   p   s
   r8   )r   r   r0   	itertoolsr   objectr   MutableMappingr   r   r8   r   r   r   r   <module>	   s   K