a
    f¼Df¥  ã                   @   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   úW/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/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 r   )r   Ú__setstate__r   r
   r	   )r   Ústater   r   r   r      s    
zDict.__setstate__Tc                 K   sl   |r| j  ¡  zH| ¡ D ],\}}|| jvr4g | j|< | j|  |¡ qW |rh| j  ¡  n|rf| j  ¡  0 d S r   )r   ÚacquireÚitemsr	   ÚappendÚrelease)r   r	   r   ÚkwargsÚkÚvr   r   r   r      s    

zDict.appendc                    s\   t |tttfƒsJ ‚|r"ˆ j ¡  z$‡ fdd„|D ƒ}W |rXˆ j ¡  n|rVˆ j ¡  0 |S )Nc                    s    g | ]}d   ˆ j |g ¡¡‘qS )ó    )Újoinr	   Úget)Ú.0Úkeyr   r   r   Ú
<listcomp>"   r   zDict._get.<locals>.<listcomp>)Ú
isinstanceÚlistÚtupleÚsetr   r   r   )r   Úkeysr   r   Úresultr   r   r   Ú_get   s    
ÿz	Dict._getc                 C   sB   |r| j  ¡  z|g| j|< W |r>| j  ¡  n|r<| j  ¡  0 dS )z Idempotent set N©r   r   r	   r   )r   r   Úvaluer   r   r   r   Ú_iset(   s    
ÿz
Dict._isetc                 C   sR   |r| j  ¡  z.|D ]}|| jv r| j|= qW |rN| j  ¡  n|rL| j  ¡  0 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   