o
    j                     @   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   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   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/ldap3/utils/ordDict.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   4   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__A   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   popitemH   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   s    z*OrderedDict.__reduce__.<locals>.<listcomp>)r   r   varscopy	__class__)r   itemstmp	inst_dictr   r+   r   
__reduce__R   s   zOrderedDict.__reduce__c                 C   s   t | S r   )listr+   r   r   r   keys\   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__h   s   zOrderedDict.__repr__c                 C   s
   |  | S r   )r/   r+   r   r   r   r.   m      
zOrderedDict.copyNc                 C   s   |  }|D ]}|||< q|S r   r   )clsiterabler   dr   r   r   r   fromkeysp   s   
zOrderedDict.fromkeysc                 C   sX   t |tr&t| t|krdS t|  | D ]\}}||kr# dS qdS t| |S )NFT)
isinstancer   r   zipr0   r   __eq__)r   otherpqr   r   r   r?   w   s   
zOrderedDict.__eq__c                 C   s
   | |k S r   r   )r   r@   r   r   r   __ne__   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<   r?   rC   r   r   r   r   r      s0    	



r   N)UserDictr   r   r   r   r   r   r   <module>   s   