
    F˝i(                         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             Z G d de      Z G d de      Z G d de      Zy)    )Lock)defaultdict)AsyncGeneratorHashableMapping)asynccontextmanager)copy)	dataclassfield)Anyoverload)DataNotDictLikeError)State)BaseEventIsolationBaseStorage	StateType
StorageKeyc                   H    e Zd ZU  ee      Zeeef   ed<   dZ	edz  ed<   y)MemoryStorageRecord)default_factorydataNstate)
__name__
__module____qualname__r   dictr   strr   __annotations__r        S/home/leshdev/mybot/venv/lib/python3.12/site-packages/aiogram/fsm/storage/memory.pyr   r      s'     6D$sCx.6E3:r    r   c            
           e Zd ZdZddZddZddededdfdZdede	dz  fd	Z
ded
ee	ef   ddfdZdedee	ef   fdZedede	dedz  fd       Zedede	dedefd       Z	 ddede	dedz  dedz  fdZy)MemoryStoragez
    Default FSM storage, stores all data in :class:`dict` and loss everything on shutdown

    .. warning::

        Is not recommended using in production in due to you will lose all data
        when your bot restarts
    returnNc                 ,    t        t              | _        y N)r   r   storageselfs    r!   __init__zMemoryStorage.__init__#   s    EPF
r    c                    K   y wr&   r   r(   s    r!   closezMemoryStorage.close(   	        keyr   c                 l   K   t        |t              r|j                  n|| j                  |   _        y wr&   )
isinstancer   r   r'   )r)   r/   r   s      r!   	set_statezMemoryStorage.set_state+   s&     1;E51I%++uSs   24c                 <   K   | j                   |   j                  S wr&   )r'   r   r)   r/   s     r!   	get_statezMemoryStorage.get_state.   s     ||C &&&s   r   c                    K   t        |t              s#dt        |      j                   }t	        |      |j                         | j                  |   _        y w)Nz-Data must be a dict or dict-like object, got )r1   r   typer   r   r	   r'   r   )r)   r/   r   msgs       r!   set_datazMemoryStorage.set_data1   sI     $%A$t*BUBUAVWC&s++!%Ss   AAc                 X   K   | j                   |   j                  j                         S wr&   )r'   r   r	   r4   s     r!   get_datazMemoryStorage.get_data7   s$     ||C %%**,,s   (*storage_keydict_keyc                    K   y wr&   r   )r)   r<   r=   s      r!   	get_valuezMemoryStorage.get_value:   s	     UXr.   defaultc                    K   y wr&   r   )r)   r<   r=   r@   s       r!   r?   zMemoryStorage.get_value=   s	     \_r.   c                 r   K   | j                   |   j                  }t        |j                  ||            S wr&   )r'   r   r	   get)r)   r<   r=   r@   r   s        r!   r?   zMemoryStorage.get_value@   s2      ||K(--DHHXw/00s   57r$   Nr&   )r   r   r   __doc__r*   r,   r   r   r2   r   r5   r   r   r9   r   r;   r   r?   r   r    r!   r#   r#      s   

U: Ui U4 U': '#* '-* -GCH4E -$ --* -c3h - X:XXtX X_:__s_WZ_ _ #	11 1 t	1
 
t1r    r#   c                   4    e Zd Zededed   fd       ZddZy)DisabledEventIsolationr/   r$   NNc                   K   d  y wr&   r   r4   s     r!   lockzDisabledEventIsolation.lockK   s	     s   	Nc                    K   y wr&   r   r(   s    r!   r,   zDisabledEventIsolation.closeO   r-   r.   rD   )r   r   r   r   r   r   rJ   r,   r   r    r!   rG   rG   J   s,    j ^J-G  r    rG   c                   <    e Zd ZddZededed   fd       ZddZy)	SimpleEventIsolationr$   Nc                 ,    t        t              | _        y r&   )r   r   _locksr(   s    r!   r*   zSimpleEventIsolation.__init__T   s    3>t3Dr    r/   rH   c                   K   | j                   |   }|4 d {    d  d d d       d {    y 7 7 # 1 d {  7  sw Y   y xY wwr&   )rO   )r)   r/   rJ   s      r!   rJ   zSimpleEventIsolation.lockX   sI     {{3 	 		 	 	 	 	 	 	s:   A3A7A5AAA	A A	Ac                 @   K   | j                   j                          y wr&   )rO   clearr(   s    r!   r,   zSimpleEventIsolation.close^   s     s   rD   )	r   r   r   r*   r   r   r   rJ   r,   r   r    r!   rM   rM   S   s4    E j ^J-G  
r    rM   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#   rG   rM   r   r    r!   <module>r\      sm     # = = *  (   3 #    
.1K .1b/ - r    