a
    9g                     @   s:  d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
 d dlmZmZ erTd dlmZ eddG dd dZeddG d	d
 d
ZerG dd deZG dd dZeeeef dddZedeeef f eeef dddZddedeeef f eee edddZedeeef f eedddZdS )    )	dataclass)TYPE_CHECKINGAnyCallableDictOptionalUnioncastoverload)AttrDictMagicFilter)HandlerObjectT)frozenc                   @   s   e Zd ZU eed< eed< dS )FlagnamevalueN)__name__
__module____qualname__str__annotations__r    r   r   u/var/www/vosh/data/www/fastworkle.ru/webshop-tgbot-v.1.0/venv/lib/python3.9/site-packages/aiogram/dispatcher/flags.pyr   
   s   
r   c                   @   s   e Zd ZU eed< eed dddZed dddZe	e
def e
def dd	d
Ze	ed ddd
Ze	ed ddd
Zdee eee
def d f ddd
ZdS )FlagDecoratorflag)r   returnc                 C   s   | |S Nr   )clsr   r   r   r   
_with_flag   s    zFlagDecorator._with_flag)r   r   c                 C   s   t | jj|}| |S r   )r   r   r   r   )selfr   Znew_flagr   r   r   _with_value   s    zFlagDecorator._with_value.c                C   s   d S r   r   r   r   r   r   r   __call__   s    zFlagDecorator.__call__c                C   s   d S r   r   r!   r   r   r   r"       s    )kwargsr   c                 K   s   d S r   r   )r   r#   r   r   r   r"   $   s    N)r   r#   r   c                 K   sj   |r|rt d|d urPt|rPi t|| jj| jji|_ttdt	f |S | 
|d u rdt|n|S )Nz;The arguments `value` and **kwargs can not be used together.)
ValueErrorcallableextract_flags_from_objectr   r   r   aiogram_flagr	   r   r   r    r   )r   r   r#   r   r   r   r"   (   s    )N)r   r   r   r   r   classmethodr   r   r    r
   r   r"   r   r   r   r   r   r   r      s    
" r   c                   @   s$   e Zd ZdeeeeedddZdS )_ChatActionFlagProtocol.)actionintervalinitial_sleepr#   r   c                 K   s   d S r   r   )r   r*   r+   r,   r#   r   r   r   r"   <   s    z _ChatActionFlagProtocol.__call__N)...)r   r   r   r   floatr   r   r"   r   r   r   r   r)   ;   s      r)   c                   @   s*   e Zd ZU eedddZer&eed< dS )FlagGenerator)r   r   c                 C   s"   |d dkrt dtt|dS )Nr   _z(Flag name must NOT start with underscoreT)AttributeErrorr   r   )r   r   r   r   r   __getattr__G   s    zFlagGenerator.__getattr__Zchat_actionN)	r   r   r   r   r   r1   r   r)   r   r   r   r   r   r.   F   s   
r.   )objr   c                 C   s"   t | dsi S ttttf | jS )Nr'   )hasattrr	   r   r   r   r'   )r2   r   r   r   r&   P   s    
r&   r   )handlerr   c                 C   s.   t | trd| v r| d } t| dr*| jS i S )z
    Extract flags from handler or middleware context data

    :param handler: handler object or data
    :return: dictionary with all handler flags
    r4   flags)
isinstancedictr3   r5   )r4   r   r   r   extract_flagsV   s
    
r8   N)default)r4   r   r9   r   c                C   s   t | }|||S )z
    Get flag by name

    :param handler: handler object or data
    :param name: name of the flag
    :param default: default value (None)
    :return: value of the flag or default
    )r8   get)r4   r   r9   r5   r   r   r   get_flagd   s    r;   )r4   magicr   c                 C   s   t | }|t|S )z
    Check flags via magic filter

    :param handler: handler object or data
    :param magic: instance of the magic
    :return: the result of magic filter check
    )r8   resolver   )r4   r<   r5   r   r   r   check_flagsv   s    r>   )Zdataclassesr   typingr   r   r   r   r   r   r	   r
   Zmagic_filterr   r   Z aiogram.dispatcher.event.handlerr   r   r   r)   r.   r   r&   r8   r;   r>   r   r   r   r   <module>   s*   ((
(