o
    㥵is                     @  sH   d dl mZ d dlZd dlZd dlmZmZ G dd deeef ZdS )    )annotationsN)AnyDictc                   @  sN   e Zd ZdZdd Zdd Zdd Zdd	 ZdddZdddZ	dddZ
dS )Statez>
    An object that can be used to store arbitrary state.
    c                 C  s"   t | ds
t | _| j  | S )N	sync_lock)hasattr	threadingLockr   acquireself r   C/home/ubuntu/.local/lib/python3.10/site-packages/kui/utils/state.py	__enter__   s   


zState.__enter__c                 C  s   | j   d S N)r   releaser   exc_typevalue	tracebackr   r   r   __exit__   s   zState.__exit__c                   s*   t | dst | _| j I d H  | S )N
async_lock)r   asyncior	   r   r
   r   r   r   r   
__aenter__   s
   

zState.__aenter__c                   s   | j   d S r   )r   r   r   r   r   r   	__aexit__   s   zState.__aexit__namer   r   returnNonec                 C  s   || |< d S r   r   )r   r   r   r   r   r   __setattr__   s   zState.__setattr__c                 C  s2   z| | W S  t y   d}t|| jj|w )Nz!'{}' object has no attribute '{}')KeyErrorAttributeErrorformat	__class____name__)r   r   messager   r   r   __getattr__"   s   
zState.__getattr__c                 C  s
   | |= d S r   r   )r   r   r   r   r   __delattr__)   s   
zState.__delattr__N)r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r#   
__module____qualname____doc__r   r   r   r   r   r%   r&   r   r   r   r   r      s    

r   )	
__future__r   r   r   typingr   r   strr   r   r   r   r   <module>   s
    