o
    LDi                  	   @   sH  d dl mZ d dlmZ d dlmZmZmZmZm	Z	 d dl
mZmZ er*d dlmZ eddG dd	 d	ZeddG d
d dZerLG dd deZG dd dZdedeeef fddZdedeeef f deeef fddZdddedeeef f dededB defddZdedeeef f dedefdd ZdS )!    )Callable)	dataclass)TYPE_CHECKINGAny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   d/var/www/www-root/data/www/77.83.87.30/venv/lib/python3.10/site-packages/aiogram/dispatcher/flags.pyr      s   
 r   c                
   @   s   e Zd ZU eed< ededd fddZdedd fddZe	de
def de
def fd	d
Ze	dedd fdd
Ze	dedd fdd
Z	ddedB dedee
def d f fdd
ZdS )FlagDecoratorflagreturnc                 C   s   | |S Nr   )clsr   r   r   r   
_with_flag   s   zFlagDecorator._with_flagr   c                 C   s   t | jj|}| |S r   )r   r   r   r   )selfr   new_flagr   r   r   _with_value   s   
zFlagDecorator._with_value.c                C      d S r   r   r   r   r   r   r   __call__      zFlagDecorator.__call__c                C   r    r   r   r!   r   r   r   r"   !   r#   kwargsc                 K   r    r   r   )r   r$   r   r   r   r"   %   r#   Nc                 K   sp   |r
|r
d}t ||d ur*t|r*i t|| jj| jji|_ttdt	f |S | 
|d u r5t|S |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$   msgr   r   r   r"   )   s   r   )r   r   r   r   r   classmethodr   r   r   r   r   r"   r   r   r   r   r   r      s&   
 $r   c                   @   s2   e Zd Z			d
dededededef
ddZd	S )_ChatActionFlagProtocol.actionintervalinitial_sleepr$   r   c                 K   r    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                   @   s0   e Zd ZU dedefddZereed< dS dS )FlagGeneratorr   r   c                 C   s&   |d dkrd}t |tt|dS )Nr   _z(Flag name must NOT start with underscoreT)AttributeErrorr   r   )r   r   r)   r   r   r   __getattr__I   s   zFlagGenerator.__getattr__chat_actionN)	r   r   r   r   r   r3   r   r+   r   r   r   r   r   r0   H   s
   
 r0   objr   c                 C   s"   t | dsi S ttttf | jS )Nr(   )hasattrr   dictr   r   r(   )r5   r   r   r   r'   S   s   
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
    r8   flags)
isinstancer7   r6   r9   )r8   r   r   r   extract_flagsY   s
   
r;   N)defaultr   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
    )r;   get)r8   r   r<   r9   r   r   r   get_flagg   s   r>   magicc                 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
    )r;   resolver	   )r8   r?   r9   r   r   r   check_flagsy   s   rA   )collections.abcr   dataclassesr   typingr   r   r   r   r   magic_filterr	   r
    aiogram.dispatcher.event.handlerr   r   r   r+   r0   r7   r   r'   r;   r>   rA   r   r   r   r   <module>   s4    )*
*