
    dh              	          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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edeeef   fdZdedeeef   f   deeef   fdZdddedeeef   f   dedee   defdZdedeeef   f   dedefdZy)    )	dataclass)TYPE_CHECKINGAnyCallableDictOptionalUnioncastoverload)AttrDictMagicFilter)HandlerObjectT)frozenc                   "    e Zd ZU eed<   eed<   y)FlagnamevalueN)__name__
__module____qualname__str__annotations__r        R/var/www/netwell/bot/venv/lib/python3.12/site-packages/aiogram/dispatcher/flags.pyr   r   
   s    
IJr   r   c            
           e Zd ZU eed<   ededd fd       Zdedd fdZe	de
def   de
def   fd       Ze	dedd fd       Ze	d	edd fd
       Z	 ddee   d	edee
def   d f   fdZy)FlagDecoratorflagreturnc                      | |      S Nr   )clsr   s     r   
_with_flagzFlagDecorator._with_flag   s    4yr   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   kwargsc                      y r!   r   )r%   r-   s     r   r*   zFlagDecorator.__call__$   r+   r   Nc                 ,   |r|rt        d      |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-   s      r   r*   zFlagDecorator.__call__(   s    
 VZ[[%"+E2"				"E c*E22EM 0MMuMMr   r!   )r   r   r   r   r   classmethodr#   r   r'   r   r   r*   r   r	   r   r   r   r   r      s    
Jd   ) ) ) hsCx0 c8J   c       
  $N}N N 
xS!?2	3	Nr   r   c                   0    e Zd Z	 	 	 ddededededef
dZy)	_ChatActionFlagProtocolactionintervalinitial_sleepr-   r   c                      y r!   r   )r%   r7   r8   r9   r-   s        r   r*   z _ChatActionFlagProtocol.__call__<   s     r   N)...)r   r   r   r   floatr   r   r*   r   r   r   r6   r6   ;   sB     !#&			 	 !		
 	 	r   r6   c                   .    e Zd ZU dedefdZereed<   yy)FlagGeneratorr   r   c                 R    |d   dk(  rt        d      t        t        |d            S )Nr   _z(Flag name must NOT start with underscoreT)AttributeErrorr   r   )r%   r   s     r   __getattr__zFlagGenerator.__getattr__G   s+    7c> !KLLT$-..r   chat_actionN)	r   r   r   r   r   rA   r   r6   r   r   r   r   r=   r=   F   s%    / / /
 ,, r   r=   objr   c                 l    t        | d      si S t        t        t        t        f   | j
                        S )Nr3   )hasattrr
   r   r   r   r3   )rC   s    r   r2   r2   P   s,    3'	S#X 0 011r   handlerr   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
    rF   flags)
isinstancedictrE   rH   )rF   s    r   extract_flagsrK   V   s8     '4 Y'%9)$w }}Ir   N)defaultr   rL   c                <    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
    )rK   get)rF   r   rL   rH   s       r   get_flagrO   d   s     '"E99T7##r   magicc                 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
    )rK   resolver   )rF   rP   rH   s      r   check_flagsrS   v   s!     '"E==%))r   )dataclassesr   typingr   r   r   r   r   r	   r
   r   magic_filterr   r    aiogram.dispatcher.event.handlerr   r   r   r6   r=   r   r2   rK   rO   rS   r   r   r   <module>rX      s/   ! V V V .> $  
 $%N %N %NP - - -23 24S> 25$sCx.!@A d3PS8n $ "	$?DcN23$
$ c]	$
 	$$	*S#X>? 	* 	*X[ 	*r   