o
    4˜ŽjV  ã                   @   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.   ú]/var/www/kodo/Anonymous/send/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 )NzÖYou 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    ý/