
    F˝i]                    L    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      Z	y)	    )annotations)Callable)Any   )CallbackTypeHandlerObjectc                  0    e Zd ZdZddZddZd	dZd
dZy)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): ...
    c                    g | _         y N)handlers)selfs    W/home/leshdev/mybot/venv/lib/python3.12/site-packages/aiogram/dispatcher/event/event.py__init__zEventObserver.__init__   s	    -/    c                N    | j                   j                  t        |             y)z0
        Register callback with filters
        )callbackN)r   appendr   )r   r   s     r   registerzEventObserver.register   s     	]H=>r   c                f   K   | j                   D ]  } |j                  |i | d{     y7 w)zk
        Propagate event to handlers.
        Handler will be called when all its filters is pass.
        N)r   call)r   argskwargshandlers       r   triggerzEventObserver.trigger%   s7     
 }} 	0G',,////	0/s   %1/1c                     d fd}|S )z:
        Decorator for registering event handlers
        c                *    j                  |        | S r   )r   )r   r   s    r   wrapperz'EventObserver.__call__.<locals>.wrapper2   s    MM(#Or   )r   r   returnr    )r   r   s   ` r   __call__zEventObserver.__call__-   s    
	 r   N)r   None)r   r   r   r"   )r   r   r   r   r   r"   )r   z&Callable[[CallbackType], CallbackType])__name__
__module____qualname____doc__r   r   r   r!   r    r   r   r
   r
   	   s    $0?0	r   r
   N)

__future__r   collections.abcr   typingr   r   r   r   r
   r    r   r   <module>r*      s    " $  0- -r   