o
    LDi[                     @   s   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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   sN   t | j}t |pt || _t |}h |j|j| _	|j
d u| _
d S N)inspectunwrapr   isawaitableiscoroutinefunctionr   getfullargspecargs
kwonlyargsr   r   )selfr   spec r   l/var/www/www-root/data/www/77.83.87.30/venv/lib/python3.10/site-packages/aiogram/dispatcher/event/handler.py__post_init__   s
   
zCallableObject.__post_init__kwargsc                    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>&   s    z2CallableObject._prepare_kwargs.<locals>.<dictcomp>)r   r   )r   r    r   r#   r   _prepare_kwargs"   s   zCallableObject._prepare_kwargsr   c                    sB   t | jg|R i | |}| jr| I d H S t|I d H S r   )r   r   r%   r   asyncio	to_thread)r   r   r    wrappedr   r   r   call(   s
   zCallableObject.callr   N)__name__
__module____qualname__CallbackType__annotations__r   r   boolr   setstrr   r   dictr   r%   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   OriginalMagicFilterr5   resolver   warningswarnr   superr   r	   r   )r   	__class__r   r   r   3   s   

	
zFilterObject.__post_init__r*   )r+   r,   r-   r5   r   r/   r   __classcell__r   r   r@   r   r4   /   s   
 r4   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)r?   r   r   r   r   isclass
issubclassr
   r   rF   updater   )r   r   r@   r   r   r   O   s
   
zHandlerObject.__post_init__r   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)rD   r)   r:   r3   rI   )r   r   r    event_filtercheckr   r   r   rK   V   s   


zHandlerObject.checkr*   )r+   r,   r-   rD   listr4   r/   r   r3   rF   r2   r   r   tupler0   rK   rB   r   r   r@   r   rC   J   s
   
 .rC   )r&   r   r=   collections.abcr   dataclassesr   r   	functoolsr   typingr   magic_filter.magicr   r;   aiogram.dispatcher.flagsr   aiogram.filters.baser	   aiogram.handlersr
   aiogram.utils.magic_filteraiogram.utils.warningsr   r.   r   r4   rC   r   r   r   r   <module>   s(    