o
    HEDi                     @   sD   d dl Z d dlmZmZ dZG dd dZedZG dd dZdS )	    N)TypeVarType)	DataMixinContextInstanceMixinc                   @   sB   e Zd Zedd Zdd Zdd Zdd Zd	d
 ZdddZ	dS )r   c                 C   s(   t | dd }|d u ri }t| d| |S )N_data)getattrsetattr)selfdata r   c/var/www/www-root/data/www/ovozai.pdev.uz/venv/lib/python3.10/site-packages/aiogram/utils/mixins.pyr
      s
   zDataMixin.datac                 C   s
   | j | S Nr
   )r	   itemr   r   r   __getitem__      
zDataMixin.__getitem__c                 C   s   || j |< d S r   r   )r	   keyvaluer   r   r   __setitem__      zDataMixin.__setitem__c                 C   s   | j |= d S r   r   r	   r   r   r   r   __delitem__   s   zDataMixin.__delitem__c                 C   s
   || j v S r   r   r   r   r   r   __contains__   r   zDataMixin.__contains__Nc                 C   s   | j ||S r   )r
   get)r	   r   defaultr   r   r   r      r   zDataMixin.getr   )
__name__
__module____qualname__propertyr
   r   r   r   r   r   r   r   r   r   r      s    
r   Tc                   @   sJ   e Zd Zdd Zeddee defddZedee defd	d
ZdS )r   c                 K   s   t d| j | _| S )N	instance_)contextvars
ContextVarr   '_ContextInstanceMixin__context_instance)clskwargsr   r   r   __init_subclass__$   s   z&ContextInstanceMixin.__init_subclass__Tr$   returnc                 C   s   |r| j d S | j  S r   )r#   r   )r$   no_errorr   r   r   get_current(   s   
z ContextInstanceMixin.get_currentr   c                 C   s6   t || std| jdt|j| j| d S )NzValue should be instance of z not )
isinstance	TypeErrorr   typer#   set)r$   r   r   r   r   set_current.   s   
z ContextInstanceMixin.set_currentN)T)	r   r   r   r&   classmethodr   r   r)   r.   r   r   r   r   r   #   s    r   )r!   typingr   r   __all__r   r   r   r   r   r   r   <module>   s    