o
    HEDi                     @   sD   d dl Z d dlmZ d dlmZ G dd deZG dd deZdS )    N)LifetimeControllerMiddleware)
FSMContextc                   @   s$   e Zd ZddgZdd Zdd ZdS )FSMMiddlewareerrorupdatec                    s&   t | jj I d H }||d< d S N
state_data)FSMSStorageProxycreatemanager
dispatchercurrent_stateselfobjdataargsproxy r   n/var/www/www-root/data/www/ovozai.pdev.uz/venv/lib/python3.10/site-packages/aiogram/contrib/middlewares/fsm.pypre_process
   s   zFSMMiddleware.pre_processc                    s.   | dd }t|tr| I d H  d S d S r   )get
isinstancer	   saver   r   r   r   post_process   s
   
zFSMMiddleware.post_processN)__name__
__module____qualname__skip_patternsr   r   r   r   r   r   r      s    r   c                       s   e Zd Zdef fddZedefddZdd Zedd	 Z	e	j
d
d	 Z	e	jdd	 Z	dddZ fddZ fddZ  ZS )r	   fsm_contextc                    s0   t t|   || _i | _i | _d | _d| _d S NF)superr	   __init__r   _copy_data_state	_is_dirty)r   r   	__class__r   r   r"      s   
zFSMSStorageProxy.__init__c                    s   | |}|  I dH  |S )z6
        :param fsm_context:
        :return:
        N)load)clsr   r   r   r   r   r
      s   zFSMSStorageProxy.createc                    sH   |    | j I d H | _| | j I d H  t| | _d| _	d S r    )
clearr   	get_stater%   r   get_datacopydeepcopyr#   r&   r   r   r   r   r)   '   s   
zFSMSStorageProxy.loadc                 C   s   | j S N)r%   r0   r   r   r   state.   s   zFSMSStorageProxy.statec                 C   s   || _ d| _d S NTr%   r&   )r   valuer   r   r   r2   2      
c                 C   s   d | _ d| _d S r3   r4   r0   r   r   r   r2   7   r6   Fc                    sX   | j | ks|r| jj| dI d H  | js|r!| j| jI d H  d| _t| | _ d S )N)r   F)r#   r   set_datar&   	set_stater2   r.   r/   )r   forcer   r   r   r   <   s   
zFSMSStorageProxy.savec                    sB   t t|  }| jrd| j dnd}d| jj d| d| dS )N'z''<z(state=z, data=z)>)r!   r	   __str__r2   r(   r   )r   sreadable_stater'   r   r   r<   D   s   zFSMSStorageProxy.__str__c                    s   | ` tt|  S r1   )r2   r!   r	   r+   r0   r'   r   r   r+   I   s   zFSMSStorageProxy.clear)F)r   r   r   r   r"   classmethodr
   r)   propertyr2   setterdeleterr   r<   r+   __classcell__r   r   r'   r   r	      s    	



r	   )r.   aiogram.dispatcher.middlewaresr   aiogram.dispatcher.storager   r   dictr	   r   r   r   r   <module>   s
    