U
    ª/e¥  ã                   @   s,   d dl mZ ddlmZ G dd„ deƒZdS )é   )Ú	Interfaceé    )ÚLockc                   @   s\   e Zd Zdd„ Zdd„ Zdd„ Zddd	„Zdd
d„Zddd„Zddd„Z	dd„ Z
dd„ ZdS )ÚDictc                 C   s   t ƒ | _tƒ | _t | ¡ d S ©N)r   ÚlockÚdictÚdatar   Ú__init__©Úself© r   ú./tmp/pip-unpacked-wheel-ziavv1t7/partd/dict.pyr
      s    zDict.__init__c                 C   s
   d| j iS ©Nr	   )r	   r   r   r   r   Ú__getstate__   s    zDict.__getstate__c                 C   s$   t  | |¡ t | ¡ |d | _d S r   )r   Ú__setstate__r   r
   r	   )r   Ústater   r   r   r      s    
zDict.__setstate__Tc                 K   s^   |r| j  ¡  z:| ¡ D ],\}}|| jkr4g | j|< | j|  |¡ qW 5 |rX| j  ¡  X d S r   )r   ÚacquireÚreleaseÚitemsr	   Úappend)r   r	   r   ÚkwargsÚkÚvr   r   r   r      s     


 zDict.appendc                    sN   t |tttfƒst‚|r"ˆ j ¡  z‡ fdd„|D ƒ}W 5 |rHˆ j ¡  X |S )Nc                    s    g | ]}d   ˆ j |g ¡¡‘qS )ó    )Újoinr	   Úget)Ú.0Úkeyr   r   r   Ú
<listcomp>"   s     zDict._get.<locals>.<listcomp>)Ú
isinstanceÚlistÚtupleÚsetÚAssertionErrorr   r   r   )r   Úkeysr   r   Úresultr   r   r   Ú_get   s    
z	Dict._getc                 C   s4   |r| j  ¡  z|g| j|< W 5 |r.| j  ¡  X dS )z Idempotent set N©r   r   r   r	   )r   r   Úvaluer   r   r   r   Ú_iset(   s    
z
Dict._isetc                 C   sD   |r| j  ¡  z |D ]}|| jkr| j|= qW 5 |r>| j  ¡  X d S r   r(   )r   r%   r   r   r   r   r   Ú_delete2   s    

zDict._deletec                 C   s   | j  ¡  | j ¡  d S r   )Z
_iset_seenÚclearr	   r   r   r   r   Údrop=   s    
z	Dict.dropc                 G   s   |   ¡  d S r   )r-   )r   Úargsr   r   r   Ú__exit__A   s    zDict.__exit__N)T)T)T)T)Ú__name__Ú
__module__Ú__qualname__r
   r   r   r   r'   r*   r+   r-   r/   r   r   r   r   r      s   





r   N)Úcorer   Ú	threadingr   r   r   r   r   r   Ú<module>   s   