î
Ó^ÝV  ã               @   s-   d  d l  m Z Gd d „  d e e ƒ Z d S)é    )Ú	DictMixinc               @   s  e  Z d  Z d d „  Z d d „  Z d d „  Z d d „  Z d	 d
 „  Z d d „  Z d d d „ Z	 d d „  Z
 d d „  Z e j Z e j Z e j Z e j Z e j Z e j Z e j Z e j Z d d „  Z d d „  Z e d d d „ ƒ Z d d „  Z d d „  Z d S)ÚOrderedDictc             O   si   t  | ƒ d k r+ t d t  | ƒ ƒ ‚ n  y |  j Wn t k
 rT |  j ƒ  Yn X|  j | | Ž  d  S)Né   z$expected at most 1 arguments, got %d)ÚlenÚ	TypeErrorÚ_OrderedDict__endÚAttributeErrorÚclearÚupdate)ÚselfÚargsÚkwds© r   ú5/tmp/pip-build-9m6vxulb/pip/pip/compat/ordereddict.pyÚ__init__   s    zOrderedDict.__init__c             C   s:   g  |  _  } | d  | | g 7} i  |  _ t j |  ƒ d  S)N)r   Ú_OrderedDict__mapÚdictr	   )r   Úendr   r   r   r	   &   s    	zOrderedDict.clearc             C   s_   | |  k rH |  j  } | d } | | | g | d <| d <|  j | <n  t j |  | | ƒ d  S)Nr   é   )r   r   r   Ú__setitem__)r   ÚkeyÚvaluer   Úcurrr   r   r   r   ,   s
    	
)zOrderedDict.__setitem__c             C   sC   t  j |  | ƒ |  j j | ƒ \ } } } | | d <| | d <d  S)Nr   r   )r   Ú__delitem__r   Úpop)r   r   ÚprevÚnextr   r   r   r   3   s    
zOrderedDict.__delitem__c             c   s=   |  j  } | d } x# | | k	 r8 | d V| d } q Wd  S)Nr   r   )r   )r   r   r   r   r   r   Ú__iter__9   s
    	
	zOrderedDict.__iter__c             c   s=   |  j  } | d } x# | | k	 r8 | d V| d } q Wd  S)Nr   r   )r   )r   r   r   r   r   r   Ú__reversed__@   s
    	
	zOrderedDict.__reversed__Tc             C   s[   |  s t  d ƒ ‚ n  | r0 t |  ƒ j ƒ  } n t |  ƒ j ƒ  } |  j | ƒ } | | f S)Nzdictionary is empty)ÚKeyErrorÚreversedr   Úiterr   )r   Úlastr   r   r   r   r   ÚpopitemG   s    zOrderedDict.popitemc                s„   ‡  f d d †  ˆ  Dƒ } ˆ  j  ˆ  j f } ˆ  `  ˆ  ` t ˆ  ƒ j ƒ  } | \ ˆ  _  ˆ  _ | rt ˆ  j | f | f Sˆ  j | f f S)Nc                s    g  |  ] } | ˆ  | g ‘ q Sr   r   )Ú.0Úk)r   r   r   ú
<listcomp>R   s   	 z*OrderedDict.__reduce__.<locals>.<listcomp>)r   r   ÚvarsÚcopyÚ	__class__)r   ÚitemsÚtmpÚ	inst_dictr   )r   r   Ú
__reduce__Q   s    zOrderedDict.__reduce__c             C   s
   t  |  ƒ S)N)Úlist)r   r   r   r   Úkeys[   s    zOrderedDict.keysc             C   s1   |  s d |  j  j f Sd |  j  j |  j ƒ  f S)Nz%s()z%s(%r))r)   Ú__name__r*   )r   r   r   r   Ú__repr__g   s    zOrderedDict.__repr__c             C   s   |  j  |  ƒ S)N)r)   )r   r   r   r   r(   l   s    zOrderedDict.copyNc             C   s(   |  ƒ  } x | D] } | | | <q W| S)Nr   )ÚclsÚiterabler   Údr   r   r   r   Úfromkeyso   s    	zOrderedDict.fromkeysc             C   s{   t  | t ƒ rk t |  ƒ t | ƒ k r+ d Sx9 t |  j ƒ  | j ƒ  ƒ D] \ } } | | k rG d SqG Wd St j |  | ƒ S)NFT)Ú
isinstancer   r   Úzipr*   r   Ú__eq__)r   ÚotherÚpÚqr   r   r   r8   v   s    (zOrderedDict.__eq__c             C   s   |  | k S)Nr   )r   r9   r   r   r   Ú__ne__€   s    zOrderedDict.__ne__)r0   Ú
__module__Ú__qualname__r   r	   r   r   r   r   r#   r-   r/   r   Ú
setdefaultr
   r   Úvaluesr*   ÚiterkeysÚ
itervaluesÚ	iteritemsr1   r(   Úclassmethodr5   r8   r<   r   r   r   r   r      s.   	

								
r   N)ÚUserDictr   r   r   r   r   r   r   Ú<module>   s   