B
    ËP•\¥  ã               @   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   ú)lib/python3.7/site-packages/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 )Nr   )r   Ú__setstate__r   r	   r   )r
   Ústater   r   r   r      s    
zDict.__setstate__Tc             K   sb   |r| j  ¡  z>x8| ¡ D ],\}}|| jkr6g | j|< | j|  |¡ qW W d |r\| j  ¡  X d S )N)r   ÚacquireÚitemsr   ÚappendÚrelease)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 d |rHˆ j ¡  X |S )Nc                s    g | ]}d   ˆ j |g ¡¡‘qS )ó    )Újoinr   Úget)Ú.0Úkey)r
   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 d|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   sH   |r| j  ¡  z$x|D ]}|| jkr| j|= qW W d |rB| j  ¡  X d S )N)r   r   r   r   )r
   r"   r   r   r   r   r   Ú_delete2   s    


zDict._deletec             C   s   | j  ¡  | j ¡  d S )N)Z
_iset_seenÚclearr   )r
   r   r   r   Údrop=   s    
z	Dict.dropc             G   s   |   ¡  d S )N)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)Zcorer   Z	threadingr   r   r   r   r   r   Ú<module>   s   