o
    ȷe                     @   s&   d Z ddlmZ G dd deeZdS )zsDrop-in replacement for collections.OrderedDict by Raymond Hettinger

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

    )	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   sV   t |dkrtdt | z| j W n ty    |   Y nw | j|i | d S )N   z$expected at most 1 arguments, got %d)len	TypeError_OrderedDict__endAttributeErrorclearupdate)selfargskwds r   N/var/www/ideatree/venv/lib/python3.10/site-packages/simplejson/ordered_dict.py__init__
   s   
zOrderedDict.__init__c                 C   s,   g  | _ }|d ||g7 }i | _t|  d S N)r   _OrderedDict__mapdictr	   )r   endr   r   r   r	      s   
zOrderedDict.clearc                 C   sH   || vr| j }|d }|||g |d<  |d< | j|< t| || d S )Nr      )r   r   r   __setitem__)r   keyvaluer   currr   r   r   r      s
    zOrderedDict.__setitem__c                 C   s2   t | | | j|\}}}||d< ||d< d S )Nr   r   )r   __delitem__r   pop)r   r   prevnextr   r   r   r       s   zOrderedDict.__delitem__c                 c   :    | j }|d }||ur|d V  |d }||usd S d S )Nr   r   r   r   r   r   r   r   r   __iter__&      
zOrderedDict.__iter__c                 c   r   )Nr   r   r   r    r   r   r   __reversed__-   r"   zOrderedDict.__reversed__Tc                 C   s:   | st d|rt|  nt|  }| |}||fS )Nzdictionary is empty)KeyErrorreversedr   iterr   )r   lastr   r   r   r   r   popitem4   s
   
zOrderedDict.popitemc                    s\    fdd D } j  jf} `  `t  }|\ _  _|r( j|f|fS  j|ffS )Nc                    s   g | ]}| | gqS r   r   ).0kr   r   r   
<listcomp><   s    z*OrderedDict.__reduce__.<locals>.<listcomp>)r   r   varscopy	__class__)r   itemstmp	inst_dictr   r+   r   
__reduce__;   s   zOrderedDict.__reduce__c                 C   s   t | S r   )listr+   r   r   r   keysE   s   zOrderedDict.keysc                 C   s&   | s	d| j jf S d| j j|  f S )Nz%s()z%s(%r))r/   __name__r0   r+   r   r   r   __repr__Q   s   zOrderedDict.__repr__c                 C   s
   |  | S r   )r/   r+   r   r   r   r.   V      
zOrderedDict.copyNc                 C   s   |  }|D ]}|||< q|S r   r   )clsiterabler   dr   r   r   r   fromkeysY   s   
zOrderedDict.fromkeysc                 C   sF   t |trt| t|kotdd t|  | D S t| |S )Nc                 s   s    | ]	\}}||kV  qd S r   r   )r)   pqr   r   r   	<genexpr>c   s    z%OrderedDict.__eq__.<locals>.<genexpr>)
isinstancer   r   allzipr0   r   __eq__r   otherr   r   r   rC   `   s
   
zOrderedDict.__eq__c                 C   s
   | |k S r   r   rD   r   r   r   __ne__f   r8   zOrderedDict.__ne__)Tr   )r6   
__module____qualname__r   r	   r   r   r!   r#   r(   r3   r5   r   
setdefaultr
   r   valuesr0   iterkeys
itervalues	iteritemsr7   r.   classmethodr<   rC   rF   r   r   r   r   r      s0    	

r   N)__doc__UserDictr   r   r   r   r   r   r   <module>   s    