o
    UjV                     @   s   d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d dlmZ d d
lmZ edef ZejjejjejjhZeG dd dZeG dd deZ eG dd deZ!dS )    N)Callable)	dataclassfield)partial)Any)MagicFilter)extract_flags_from_object)Filter)BaseHandler)Recommendation.c                   @   s   e Zd ZU eed< eddZeed< eddZe	e
 ed< eddZeed< dd	d
Zdee
ef dee
ef fddZdededefddZdS )CallableObjectcallbackF)init	awaitableparamsvarkwreturnNc              	   C   s   t | j}t |pt || _i }tjdkr"dd l}|j	j
|d< zt j|fi |}W n ttfy@   t | _d| _Y d S w t }d}|j D ]}|jtv rY||j qK|jt jjkrbd}qK|| _|| _d S )N)      r   annotation_formatFT)inspectunwrapr   isawaitableiscoroutinefunctionr   sysversion_infoannotationlibFormat
FORWARDREF	signature
ValueError	TypeErrorsetr   r   
parametersvalueskind_ACCEPTED_PARAM_KINDSaddname	ParameterVAR_KEYWORD)selfr   kwargsr   r   r   r   p r.   Y/opt/telega-widget/.venv/lib/python3.10/site-packages/aiogram/dispatcher/event/handler.py__post_init__"   s.   


zCallableObject.__post_init__r,   c                    s   | j r S  fdd| jD S )Nc                    s   i | ]}| v r| | qS r.   r.   ).0kr,   r.   r/   
<dictcomp>B   s    z2CallableObject._prepare_kwargs.<locals>.<dictcomp>)r   r   )r+   r,   r.   r3   r/   _prepare_kwargs>   s   zCallableObject._prepare_kwargsargsc                    sB   t | jg|R i | |}| jr| I d H S t|I d H S )N)r   r   r5   r   asyncio	to_thread)r+   r6   r,   wrappedr.   r.   r/   callD   s
   zCallableObject.callr   N)__name__
__module____qualname__CallbackType__annotations__r   r   boolr   r"   strr   r0   dictr   r5   r:   r.   r.   r.   r/   r      s   
 
"r   c                       s0   e Zd ZU dZedB ed< d fddZ  ZS )FilterObjectNmagicr   c                    s^   t | jtr| j| _| jj| _t | jtstjtddd t	 
  t | jtr-d| _d S d S )NzYou are using F provided by magic_filter package directly, but it lacks `.as_()` extension.
 Please change the import statement: from `from magic_filter import F` to `from aiogram import F` to silence this warning.   )categorymessage
stacklevelT)
isinstancer   OriginalMagicFilterrE   resolver   warningswarnr   superr0   r	   r   )r+   	__class__r.   r/   r0   O   s   

	
zFilterObject.__post_init__r;   )r<   r=   r>   rE   rK   r@   r0   __classcell__r.   r.   rP   r/   rD   K   s   
 rD   c                
       st   e Zd ZU dZee dB ed< eedZ	ee
ef ed< d fddZded	edeeee
ef f fd
dZ  ZS )HandlerObjectNfilters)default_factoryflagsr   c                    sD   t    t| j}t|rt|trd| _| j	
t| d S )NT)rO   r0   r   r   r   isclass
issubclassr
   r   rV   updater   )r+   r   rP   r.   r/   r0   k   s
   
zHandlerObject.__post_init__r6   r,   c                    s^   | j sd|fS | j D ]}|j|i |I d H }|s d|f  S t|tr*|| qd|fS )NTF)rT   r:   rJ   rC   rY   )r+   r6   r,   event_filtercheckr.   r.   r/   r[   r   s   


zHandlerObject.checkr;   )r<   r=   r>   rT   listrD   r@   r   rC   rV   rB   r   r0   tuplerA   r[   rR   r.   r.   rP   r/   rS   f   s
   
 .rS   )"r7   r   r   rM   collections.abcr   dataclassesr   r   	functoolsr   typingr   magic_filter.magicr   rK   aiogram.dispatcher.flagsr   aiogram.filters.baser	   aiogram.handlersr
   aiogram.utils.magic_filteraiogram.utils.warningsr   r?   r)   POSITIONAL_ONLYPOSITIONAL_OR_KEYWORDKEYWORD_ONLYr&   r   rD   rS   r.   r.   r.   r/   <module>   s2    /