o
    Nrf¥  ã                   @   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   úS/var/www/html/software/conda/envs/catlas/lib/python3.10/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   sp   |r| j  ¡  z'| ¡ D ]\}}|| jvrg | j|< | j|  |¡ qW |r-| j  ¡  d S d S |r7| j  ¡  w w 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 |r#ˆ j ¡  |S |r-ˆ j ¡  w w )Nc                    s    g | ]}d   ˆ j |g ¡¡‘qS )ó    )Újoinr	   Úget)Ú.0Úkeyr   r   r   Ú
<listcomp>"   s     zDict._get.<locals>.<listcomp>)Ú
isinstanceÚlistÚtupleÚsetr   r   r   )r   Úkeysr   r   Úresultr   r   r   Ú_get   s   

þÿz	Dict._getc                 C   sF   |r| j  ¡  z|g| j|< W |r| j  ¡  dS dS |r"| j  ¡  w w )z Idempotent set N©r   r   r	   r   )r   r   Úvaluer   r   r   r   Ú_iset(   s   
ÿÿz
Dict._isetc                 C   sV   |r| j  ¡  z|D ]}|| jv r| j|= q
W |r | j  ¡  d S d S |r*| j  ¡  w w 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)Ú__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    