
    F˝i                       d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	m
Z
 d dlmZmZ erd dlmZ  ed       G d	 d
             Z ed       G d d             Zer G d de      Z G d d      ZddZddZdd	 	 	 	 	 	 	 ddZddZy)    )annotations)Callable)	dataclass)TYPE_CHECKINGAnycastoverload)AttrDictMagicFilter)HandlerObjectT)frozenc                  "    e Zd ZU ded<   ded<   y)Flagstrnamer   valueN)__name__
__module____qualname____annotations__     Q/home/leshdev/mybot/venv/lib/python3.12/site-packages/aiogram/dispatcher/flags.pyr   r      s    
IJr   r   c                  ~    e Zd ZU ded<   ed
d       ZddZedd       Zedd       Zedd       Z	 d	 	 	 	 	 dd	Zy)FlagDecoratorr   flagc                     | |      S Nr   )clsr   s     r   
_with_flagzFlagDecorator._with_flag   s    4yr   c                d    t        | j                  j                  |      }| j                  |      S r   )r   r   r   r    )selfr   new_flags      r   _with_valuezFlagDecorator._with_value   s%    		.x((r   c                    y r   r   r"   r   s     r   __call__zFlagDecorator.__call__       r   c                    y r   r   r&   s     r   r'   zFlagDecorator.__call__#   r(   r   c                     y r   r   )r"   kwargss     r   r'   zFlagDecorator.__call__'   r(   r   Nc                0   |r|rd}t        |      |bt        |      rWi t        |      | j                  j                  | j                  j
                  i|_        t        t        dt        f   |      S | j                  |t        |            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+   msgs       r   r'   zFlagDecorator.__call__+   s    
 VOCS/!%"+E2"				"E c*E22EM 0MMuMMr   )r   r   returnr   )r   r   r2   r   )r   Callable[..., Any]r2   r3   )r+   r   r2   r   r   )r   
Any | Noner+   r   r2   z"Callable[..., Any] | FlagDecorator)	r   r   r   r   classmethodr    r$   r	   r'   r   r   r   r   r      s    
J )      
 !NN N 
,	Nr   r   c                  .    e Zd Z	 	 	 d	 	 	 	 	 	 	 	 	 ddZy)_ChatActionFlagProtocolc                     y r   r   )r"   actionintervalinitial_sleepr+   s        r   r'   z _ChatActionFlagProtocol.__call__@   s     r   N)...)
r9   r   r:   floatr;   r<   r+   r   r2   r   )r   r   r   r'   r   r   r   r7   r7   ?   sB     !#&			 	 !		
 	 	r   r7   c                  &    e Zd ZU ddZerded<   yy)FlagGeneratorc                V    |d   dk(  rd}t        |      t        t        |d            S )Nr   _z(Flag name must NOT start with underscoreT)AttributeErrorr   r   )r"   r   r1   s      r   __getattr__zFlagGenerator.__getattr__K   s/    7c><C %%T$-..r   r7   chat_actionN)r   r   r2   r   )r   r   r   rB   r   r   r   r   r   r>   r>   J   s    / ,, r   r>   c                l    t        | d      si S t        t        t        t        f   | j
                        S )Nr0   )hasattrr   dictr   r   r0   )objs    r   r/   r/   U   s,    3'	S#X 0 011r   c                h    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
    handlerflags)
isinstancerF   rE   rJ   )rI   s    r   extract_flagsrL   [   s8     '4 Y'%9)$w }}Ir   N)defaultc               <    t        |       }|j                  ||      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
    )rL   get)rI   r   rM   rJ   s       r   get_flagrP   i   s     '"E99T7##r   c                L    t        |       }|j                  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
    )rL   resolver
   )rI   magicrJ   s      r   check_flagsrT   {   s!     '"E==%))r   )rG   r   r2   dict[str, Any])rI   HandlerObject | dict[str, Any]r2   rU   )rI   rV   r   r   rM   r4   r2   r   )rI   rV   rS   r   r2   r   )
__future__r   collections.abcr   dataclassesr   typingr   r   r   r	   magic_filterr
   r    aiogram.dispatcher.event.handlerr   r   r   r7   r>   r/   rL   rP   rT   r   r   r   <module>r]      s    " $ ! 5 5 .> $  
 $&N &N &NR - - -2$ 	$+$
$ 	$
 	$$	*r   