
    dhH                    H    d dl mZ d dlmZmZmZ ddlmZmZ  G d d      Z	y)    )annotations)AnyCallableList   )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    X/var/www/netwell/bot/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>.wrapper1   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   typingr   r   r   r   r   r	   r   r!   r   r   <module>r*      s    " & & 0- -r   