a
    y{Jhk                     @  s~   d dl mZ d dlZd dlmZmZmZmZmZm	Z	m
Z
mZ erLd dlmZ dZG dd dZe	dZG d	d
 d
ee ZdS )    )annotationsN)TYPE_CHECKINGAnyDictGenericOptionalTypeVarcastoverload)Literal)ContextInstanceMixin	DataMixinc                   @  st   e Zd ZeddddZddddd	Zddd
dddZdd
dddZdddddZdddddddZ	dS )r   zDict[str, Any]returnc                 C  s(   t | dd }|d u r$i }t| d| |S )N_data)getattrsetattr)selfdata r   F/var/www/shaz/venv/lib/python3.9/site-packages/aiogram/utils/mixins.pyr      s
    zDataMixin.datastrr   )keyr   c                 C  s
   | j | S Nr   r   r   r   r   r   __getitem__   s    zDataMixin.__getitem__None)r   valuer   c                 C  s   || j |< d S r   r   )r   r   r   r   r   r   __setitem__   s    zDataMixin.__setitem__c                 C  s   | j |= d S r   r   r   r   r   r   __delitem__   s    zDataMixin.__delitem__boolc                 C  s
   || j v S r   r   r   r   r   r   __contains__   s    zDataMixin.__contains__NzOptional[Any])r   defaultr   c                 C  s   | j ||S r   )r   get)r   r   r#   r   r   r   r$   !   s    zDataMixin.get)N)
__name__
__module____qualname__propertyr   r   r   r    r"   r$   r   r   r   r   r      s   r   ContextInstancec                      s   e Zd ZU ded< ddd fddZeedd	d
dZeedddddZeedddddZeddddddZedddddZedddddZ	  Z
S )r   z'contextvars.ContextVar[ContextInstance]'_ContextInstanceMixin__context_instancer   r   )kwargsr   c                   s"   t    td| j | _d S )NZ	instance_)super__init_subclass__contextvars
ContextVarr%   r*   )clsr+   	__class__r   r   r-   +   s    
z&ContextInstanceMixin.__init_subclass__zOptional[ContextInstance]r   c                 C  s   d S r   r   )r0   r   r   r   get_current/   s    z ContextInstanceMixin.get_currentzLiteral[True])no_errorr   c                 C  s   d S r   r   r0   r4   r   r   r   r3   4   s    zLiteral[False]r)   c                 C  s   d S r   r   r5   r   r   r   r3   ;   s    Tr!   c                 C  sF   t tjt | j| _z| j }W n ty@   |r:d }n Y n0 |S r   )r	   r.   r/   r)   r*   r$   LookupError)r0   r4   currentr   r   r   r3   B   s    z"contextvars.Token[ContextInstance])r   r   c                 C  s2   t || s&td| jdt|j| j|S )NzValue should be instance of z not )
isinstance	TypeErrorr%   typer*   set)r0   r   r   r   r   set_currentU   s
    
z ContextInstanceMixin.set_current)tokenr   c                 C  s   | j | d S r   )r*   reset)r0   r=   r   r   r   reset_current]   s    z"ContextInstanceMixin.reset_current)T)r%   r&   r'   __annotations__r-   r
   classmethodr3   r<   r?   __classcell__r   r   r1   r   r   (   s$   
 r   )
__future__r   r.   typingr   r   r   r   r   r   r	   r
   typing_extensionsr   __all__r   r)   r   r   r   r   r   <module>   s   (