î
‚Ü X*  ã               @   s\   d  Z  d d l m Z y e Wn e k
 r> d d „  Z Yn XGd d „  d e e ƒ Z d S)zsDrop-in replacement for collections.OrderedDict by Raymond Hettinger

http://code.activestate.com/recipes/576693/

é    )Ú	DictMixinc             C   s   x |  D] } | s d Sq Wd S)NFT© )ÚseqÚelemr   r   úT/home/ubuntu/projects/ifolica/lib/python3.4/site-packages/simplejson/ordered_dict.pyÚall   s    r   c               @   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Úkwdsr   r   r   Ú__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   +   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__1   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__8   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   Úpopitem?   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>L   s   	 z*OrderedDict.__reduce__.<locals>.<listcomp>)r   r   ÚvarsÚcopyÚ	__class__)r   ÚitemsÚtmpÚ	inst_dictr   )r   r   Ú
__reduce__K   s    zOrderedDict.__reduce__c             C   s
   t  |  ƒ S)N)Úlist)r   r   r   r   ÚkeysU   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__a   s    zOrderedDict.__repr__c             C   s   |  j  |  ƒ S)N)r,   )r   r   r   r   r+   f   s    zOrderedDict.copyNc             C   s(   |  ƒ  } x | D] } | | | <q W| S)Nr   )ÚclsÚiterabler   Údr   r   r   r   Úfromkeysi   s    	zOrderedDict.fromkeysc             C   sc   t  | t ƒ rS t |  ƒ t | ƒ k oR t d d „  t |  j ƒ  | j ƒ  ƒ Dƒ ƒ St j |  | ƒ S)Nc             s   s!   |  ] \ } } | | k Vq d  S)Nr   )r'   ÚpÚqr   r   r   ú	<genexpr>s   s    z%OrderedDict.__eq__.<locals>.<genexpr>)Ú
isinstancer   r
   r   Úzipr-   r   Ú__eq__)r   Úotherr   r   r   r>   p   s    ,zOrderedDict.__eq__c             C   s   |  | k S)Nr   )r   r?   r   r   r   Ú__ne__v   s    zOrderedDict.__ne__)r3   Ú
__module__Ú__qualname__r   r   r   r   r    r!   r&   r0   r2   r   Ú
setdefaultr   r   Úvaluesr-   ZiterkeysZ
itervaluesÚ	iteritemsr4   r+   Úclassmethodr8   r>   r@   r   r   r   r   r      s.   	
								r   N)Ú__doc__ÚUserDictr   r   Ú	NameErrorr   r   r   r   r   r   Ú<module>   s   