o
    4˜Žj]  ã                   @  sF   d dl mZ d dlmZ d dlmZ ddlmZmZ G dd„ dƒZ	dS )	é    )Úannotations)ÚCallable)ÚAnyé   )ÚCallbackTypeÚHandlerObjectc                   @  s8   e Zd ZdZddd„Zddd	„Zddd„Zddd„ZdS )ÚEventObserveran  
    Simple events observer

    Is used for managing events is not related with Telegram
    (For example startup/shutdown processes)

    Handlers can be registered via decorator or method

    .. code-block:: python

        <observer>.register(my_handler)

    .. code-block:: python

        @<observer>()
        async def my_handler(*args, **kwargs): ...
    ÚreturnÚNonec                 C  s
   g | _ d S ©N)Úhandlers©Úself© r   ú[/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/aiogram/dispatcher/event/event.pyÚ__init__   s   
zEventObserver.__init__Úcallbackr   c                 C  s   | j  t|d�¡ dS )z0
        Register callback with filters
        ©r   N)r   Úappendr   )r   r   r   r   r   Úregister   s   zEventObserver.registerÚargsr   Úkwargsc                 Ï  s(   �| j D ]}|j|i |¤ŽI dH  qdS )zk
        Propagate event to handlers.
        Handler will be called when all its filters is pass.
        N)r   Úcall)r   r   r   Úhandlerr   r   r   Útrigger%   s   €
ÿzEventObserver.triggerú&Callable[[CallbackType], CallbackType]c                   s   d‡ fdd„}|S )z:
        Decorator for registering event handlers
        r   r   r	   c                   s   ˆ   | ¡ | S r   )r   r   r   r   r   Úwrapper2   s   
z'EventObserver.__call__.<locals>.wrapperN)r   r   r	   r   r   )r   r   r   r   r   Ú__call__-   s   zEventObserver.__call__N)r	   r
   )r   r   r	   r
   )r   r   r   r   r	   r
   )r	   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   r   r   	   s    


r   N)
Ú
__future__r   Úcollections.abcr   Útypingr   r   r   r   r   r   r   r   r   Ú<module>   s
    