o
    4˜Žj>  ã                   @   sÚ   d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	 d dl
m
Z
 d dlmZmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZmZmZmZ eG dd„ dƒƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdS )é    )ÚLock)Údefaultdict)ÚAsyncGeneratorÚHashableÚMapping)Úasynccontextmanager)Úcopy)Ú	dataclassÚfield)ÚAnyÚoverload)ÚDataNotDictLikeError)ÚState)ÚBaseEventIsolationÚBaseStorageÚ	StateTypeÚ
StorageKeyc                   @   s8   e Zd ZU eed�Zeeef ed< dZ	edB ed< dS )ÚMemoryStorageRecord)Údefault_factoryÚdataNÚstate)
Ú__name__Ú
__module__Ú__qualname__r
   Údictr   Ústrr   Ú__annotations__r   © r   r   úW/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/aiogram/fsm/storage/memory.pyr      s   
 r   c                
   @   sì   e Zd ZdZddd„Zddd„Zdded	eddfd
d„Zdede	dB fdd„Z
dedee	ef ddfdd„Zdedee	ef fdd„Zedede	dedB fdd„ƒZedede	dedefdd„ƒZ	ddede	dedB dedB fdd„ZdS )ÚMemoryStoragez÷
    Default FSM storage; uses a regular :class:`dict` to store data and
    does not persist it across restarts.

    .. warning::

        This storage is not recommended for production use, as all data is lost
        when the bot restarts
    ÚreturnNc                 C   ó   t tƒ| _d S ©N)r   r   Ústorage©Úselfr   r   r   Ú__init__$   s   
ÿzMemoryStorage.__init__c                 Ã   ó   �d S r"   r   r$   r   r   r   Úclose)   ó   €zMemoryStorage.closeÚkeyr   c                 Ã   s"   �t |tƒr	|jn|| j| _d S r"   )Ú
isinstancer   r   r#   )r%   r*   r   r   r   r   Ú	set_state,   s   € zMemoryStorage.set_statec                 Ã   s   �| j | jS r"   )r#   r   ©r%   r*   r   r   r   Ú	get_state/   s   €zMemoryStorage.get_stater   c                 Ã   s8   �t |tƒsdt|ƒj› �}t|ƒ‚| ¡ | j| _d S )Nz-Data must be a dict or dict-like object, got )r+   r   Útyper   r   r   r#   r   )r%   r*   r   Úmsgr   r   r   Úset_data2   s
   €
zMemoryStorage.set_datac                 Ã   s   �| j | j ¡ S r"   )r#   r   r   r-   r   r   r   Úget_data8   s   €zMemoryStorage.get_dataÚstorage_keyÚdict_keyc                 Ã   r'   r"   r   )r%   r3   r4   r   r   r   Ú	get_value;   r)   zMemoryStorage.get_valueÚdefaultc                 Ã   r'   r"   r   )r%   r3   r4   r6   r   r   r   r5   >   r)   c                 Ã   s   �| j | j}t| ||¡ƒS r"   )r#   r   r   Úget)r%   r3   r4   r6   r   r   r   r   r5   A   s   €©r    Nr"   )r   r   r   Ú__doc__r&   r(   r   r   r,   r   r.   r   r   r1   r   r2   r   r5   r   r   r   r   r      s,    


üþýüûr   c                   @   s0   e Zd Zededed fdd„ƒZd	dd„ZdS )
ÚDisabledEventIsolationr*   r    ©NNc                 C  s   �d V  d S r"   r   r-   r   r   r   ÚlockL   s   €
zDisabledEventIsolation.lockNc                 Ã   r'   r"   r   r$   r   r   r   r(   P   r)   zDisabledEventIsolation.closer8   )r   r   r   r   r   r   r<   r(   r   r   r   r   r:   K   s    r:   c                   @   s:   e Zd Zddd„Zededed fdd„ƒZdd	d
„ZdS )ÚSimpleEventIsolationr    Nc                 C   r!   r"   )r   r   Ú_locksr$   r   r   r   r&   U   s   zSimpleEventIsolation.__init__r*   r;   c              	   C  sP   �| j | }|4 I d H š d V  W d   ƒI d H  d S 1 I d H s!w   Y  d S r"   )r>   )r%   r*   r<   r   r   r   r<   Y   s
   €
.ÿzSimpleEventIsolation.lockc                 Ã   s   �| j  ¡  d S r"   )r>   Úclearr$   r   r   r   r(   _   s   €zSimpleEventIsolation.closer8   )	r   r   r   r&   r   r   r   r<   r(   r   r   r   r   r=   T   s
    
r=   N)Úasyncior   Úcollectionsr   Úcollections.abcr   r   r   Ú
contextlibr   r   Údataclassesr	   r
   Útypingr   r   Úaiogram.exceptionsr   Úaiogram.fsm.stater   Úaiogram.fsm.storage.baser   r   r   r   r   r   r:   r=   r   r   r   r   Ú<module>   s    2	