3
ÙLôYþ  ã               @   s"   d dl mZ G d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   sT   t |ƒdkrtdt |ƒ ƒ‚y
| j W n tk
rB   | jƒ  Y nX | j||Ž d S )Né   z$expected at most 1 arguments, got %d)ÚlenÚ	TypeErrorÚ_OrderedDict__endÚAttributeErrorÚclearÚupdate)ÚselfÚargsÚkwds© r   új/private/var/folders/7d/20zwc49s3kn54d3vgq8bd4640000gn/T/pip-build-an2lx5zf/pip/pip/_vendor/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   sH   || kr6| j }|d }|||g |d<  |d< | j|< tj| ||ƒ d S )Nr   é   )r   r   r   Ú__setitem__)r   ÚkeyÚvaluer   Úcurrr   r   r   r   *   s
     zOrderedDict.__setitem__c             C   s2   t j| |ƒ | jj|ƒ\}}}||d< ||d< d S )Nr   r   )r   Ú__delitem__r   Úpop)r   r   ÚprevÚnextr   r   r   r   1   s    zOrderedDict.__delitem__c             c   s2   | j }|d }x||k	r,|d V  |d }qW d S )Nr   r   )r   )r   r   r   r   r   r   Ú__iter__7   s
    

zOrderedDict.__iter__c             c   s2   | j }|d }x||k	r,|d V  |d }qW d S )Nr   r   )r   )r   r   r   r   r   r   Ú__reversed__>   s
    

zOrderedDict.__reversed__Tc             C   s<   | st dƒ‚|rt| ƒjƒ }nt| ƒjƒ }| j|ƒ}||fS )Nzdictionary is empty)ÚKeyErrorÚreversedr   Úiterr   )r   Úlastr   r   r   r   r   ÚpopitemE   s    
zOrderedDict.popitemc                s\   ‡ fdd„ˆ D ƒ}ˆ j ˆ jf}ˆ ` ˆ `tˆ ƒjƒ }|\ˆ _ ˆ _|rPˆ j|f|fS ˆ j|ffS )Nc                s   g | ]}|ˆ | g‘qS r   r   )Ú.0Úk)r   r   r   ú
<listcomp>P   s    z*OrderedDict.__reduce__.<locals>.<listcomp>)r   r   ÚvarsÚcopyÚ	__class__)r   ÚitemsÚtmpÚ	inst_dictr   )r   r   Ú
__reduce__O   s    zOrderedDict.__reduce__c             C   s   t | ƒS )N)Úlist)r   r   r   r   ÚkeysY   s    zOrderedDict.keysc             C   s&   | sd| j jf S d| j j| jƒ f S )Nz%s()z%s(%r))r)   Ú__name__r*   )r   r   r   r   Ú__repr__e   s    zOrderedDict.__repr__c             C   s
   | j | ƒS )N)r)   )r   r   r   r   r(   j   s    zOrderedDict.copyNc             C   s    | ƒ }x|D ]}|||< qW |S )Nr   )ÚclsÚiterabler   Údr   r   r   r   Úfromkeysm   s    
zOrderedDict.fromkeysc             C   sZ   t |tƒrNt| ƒt|ƒkrdS x*t| jƒ |jƒ ƒD ]\}}||kr2dS q2W dS tj| |ƒS )NFT)Ú
isinstancer   r   Úzipr*   r   Ú__eq__)r   ÚotherÚpÚqr   r   r   r8   t   s    
zOrderedDict.__eq__c             C   s
   | |k S )Nr   )r   r9   r   r   r   Ú__ne__~   s    zOrderedDict.__ne__)T)N)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   