o
    HEDi                     @   s0   d dl Z d dlZddlmZ G dd deZdS )    N   )BaseStoragec                
   @   sp  e Zd ZdZdd Zdd Zdd Zdd	 Zd
d
d
ddej	e
ed
f dej	e
ed
f deje
 deje
 fddZd
d
d
ddej	e
ed
f dej	e
ed
f deje
 dejfddZd
d
d
ddej	e
ed
f dej	e
ed
f dejfddZd
d
d
ddej	e
ed
f dej	e
ed
f dejfddZd
d
d
ddej	e
ed
f dej	e
ed
f dejfddZd
d
dddej	e
ed
f dej	e
ed
f d eje fd!d"Zd#d$ Zd
d
d
ddej	e
ed
f dej	e
ed
f deje dejfd%d&Zd
d
d
d'dej	e
ed
f dej	e
ed
f d(ejfd)d*Zd
d
d
d'dej	e
ed
f dej	e
ed
f d(ejfd+d,Zd-d. Zd
S )/MemoryStoragez
    In-memory based states storage.

    This type of storage is not recommended for usage in bots, because you will lost all states after restarting.
    c                    s   d S N selfr   r   q/var/www/www-root/data/www/ovozai.pdev.uz/venv/lib/python3.10/site-packages/aiogram/contrib/fsm_storage/memory.pywait_closed   s   zMemoryStorage.wait_closedc                    s   | j   d S r   )dataclearr   r   r   r	   close   s   zMemoryStorage.closec                 C   s
   i | _ d S r   )r   r   r   r   r	   __init__   s   
zMemoryStorage.__init__c                 C   sX   t t| j||d\}}|| jvri | j|< || j| vr(d i i d| j| |< ||fS Nchatuser)stater   bucket)mapstrcheck_addressr   )r   r   r   chat_iduser_idr   r   r	   resolve_address   s   

zMemoryStorage.resolve_addressN)r   r   defaultr   r   r   returnc                   s0   | j ||d\}}| j| | d| |S Nr   r   )r   r   getresolve_stater   r   r   r   r   r   r	   	get_state!      zMemoryStorage.get_statec                   ,   | j ||d\}}t| j| | d S Nr   r   r   copydeepcopyr   r    r   r   r	   get_data(      zMemoryStorage.get_datar   r   r   r   c                   D   |d u ri }| j ||d\}}| j| | d j|fi | d S r$   r   r   update)r   r   r   r   kwargsr   r   r	   update_data/   
   $zMemoryStorage.update_datar   r   r   r   c                   s0   | j ||d\}}| || j| | d< d S r   )r   r   r   )r   r   r   r   r   r   r	   	set_state8   r"   zMemoryStorage.set_statec                   <   | j ||d\}}t|| j| | d< | || d S r$   r   r&   r'   r   _cleanup)r   r   r   r   r   r   r	   set_data?      zMemoryStorage.set_dataT)r   r   	with_datar8   c                   sB   | j ||d dI d H  |r| j||i dI d H  | || d S )Nr1   r*   )r2   r6   r5   )r   r   r   r8   r   r   r	   reset_stateG   s
   zMemoryStorage.reset_statec                 C   s   dS )NTr   r   r   r   r	   
has_bucketP   s   zMemoryStorage.has_bucketc                   r#   Nr   r   r%   r    r   r   r	   
get_bucketS   r)   zMemoryStorage.get_bucket)r   r   r   r   c                   r3   r;   r4   )r   r   r   r   r   r   r	   
set_bucketZ   r7   zMemoryStorage.set_bucketc                   r+   r;   r,   )r   r   r   r   r.   r   r   r	   update_bucketb   r0   zMemoryStorage.update_bucketc                 C   sR   | j ||d\}}| j| | d i i dkr| j| |= | j| s'| j|= d S d S r   )r   r   )r   r   r   r   r   r	   r5   k   s   
zMemoryStorage._cleanup)__name__
__module____qualname____doc__r
   r   r   r   typingUnionr   intOptionalr!   Dictr(   r/   AnyStrr2   r6   boolr9   r:   dictr<   r=   r>   r5   r   r   r   r	   r      s    





	
	

	
	r   )r&   rC   dispatcher.storager   r   r   r   r   r	   <module>   s    