o
    Fhk                     @  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r&d 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                   @  sN   e Zd ZedddZddd	ZdddZdddZdddZddddZ	dS )r   returnDict[str, Any]c                 C  s(   t | dd }|d u ri }t| d| |S )N_data)getattrsetattr)selfdata r   G/var/www/html/venv/lib/python3.10/site-packages/aiogram/utils/mixins.pyr      s
   zDataMixin.datakeystrr   c                 C  s
   | j | S Nr   r   r   r   r   r   __getitem__      
zDataMixin.__getitem__valueNonec                 C  s   || j |< d S r   r   )r   r   r   r   r   r   __setitem__      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__   r   zDataMixin.__contains__NdefaultOptional[Any]c                 C  s   | j ||S r   )r   get)r   r   r%   r   r   r   r'   !   r!   zDataMixin.get)r   r   )r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   )r   r   r   r#   r   )r   r   r%   r&   r   r&   )
__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 fddZeedd
dZeedddZeedddZe	d d!ddZed"ddZed#ddZ	  Z
S )$r   z'contextvars.ContextVar[ContextInstance]'_ContextInstanceMixin__context_instancekwargsr   r   r   c                   s"   t    td| j | _d S )N	instance_)super__init_subclass__contextvars
ContextVarr(   r-   )clsr.   	__class__r   r   r1   +   s   
z&ContextInstanceMixin.__init_subclass__Optional[ContextInstance]c                 C     d S r   r   )r4   r   r   r   get_current/   s   z ContextInstanceMixin.get_currentno_errorLiteral[True]c                 C  r8   r   r   r4   r:   r   r   r   r9   4      Literal[False]r,   c                 C  r8   r   r   r<   r   r   r   r9   ;   r=   Tr#   c                 C  sD   t tjt | j| _z| j }W |S  ty!   |r d }Y |S  w r   )r	   r2   r3   r,   r-   r'   LookupError)r4   r:   currentr   r   r   r9   B   s   r   "contextvars.Token[ContextInstance]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)r4   r   r   r   r   set_currentU   s
   
z ContextInstanceMixin.set_currenttokenc                 C  s   | j | d S r   )r-   reset)r4   rG   r   r   r   reset_current]   s   z"ContextInstanceMixin.reset_current)r.   r   r   r   )r   r7   )r:   r;   r   r7   )r:   r>   r   r,   )T)r:   r#   r   r7   )r   r,   r   rA   )rG   rA   r   r   )r(   r)   r*   __annotations__r1   r
   classmethodr9   rF   rI   __classcell__r   r   r5   r   r   (   s&   
 r   )
__future__r   r2   typingr   r   r   r   r   r   r	   r
   typing_extensionsr   __all__r   r,   r   r   r   r   r   <module>   s    (