o
    Ti*                     @   sJ   d Z ddlmZ ze W n ey   dd ZY nw 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                 C   s   | D ]}|s	 dS qdS )NFT )seqelemr   r   F/home/ubuntu/.local/lib/python3.10/site-packages/hjson/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   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kwdsr   r   r   __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__1      
zOrderedDict.__iter__c                 c   r!   )Nr	   r   r"   r#   r   r   r   __reversed__8   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   popitem?   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>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 r   )listr.   r   r   r   keysU   s   zOrderedDict.keysc                 C   s&   | s	d| j jf S d| j j|  f S )Nz%s()z%s(%r))r2   __name__r3   r.   r   r   r   __repr__a   s   zOrderedDict.__repr__c                 C   s
   |  | S r   )r2   r.   r   r   r   r1   f      
zOrderedDict.copyNc                 C   s   |  }|D ]}|||< q|S r   r   )clsiterabler   dr   r   r   r   fromkeysi   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>s   s    z%OrderedDict.__eq__.<locals>.<genexpr>)
isinstancer   r
   r   zipr3   r   __eq__r   otherr   r   r   rE   p   s
   
zOrderedDict.__eq__c                 C   s
   | |k S r   r   rF   r   r   r   __ne__v   r;   zOrderedDict.__ne__)Tr   )r9   
__module____qualname__r   r   r   r   r$   r&   r+   r6   r8   r   
setdefaultr   r   valuesr3   iterkeys
itervalues	iteritemsr:   r1   classmethodr?   rE   rH   r   r   r   r   r      s0    	

r   N)__doc__UserDictr   r   	NameErrorr   r   r   r   r   r   <module>   s    