a
    9gH                     @  sB   d dl mZ d dlmZmZmZ ddlmZmZ G dd dZ	dS )    )annotations)AnyCallableList   )CallbackTypeHandlerObjectc                   @  sN   e Zd ZdZddddZddddd	Zd
d
ddddZd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): ...
    None)returnc                 C  s
   g | _ d S N)handlersself r   {/var/www/vosh/data/www/fastworkle.ru/webshop-tgbot-v.1.0/venv/lib/python3.9/site-packages/aiogram/dispatcher/event/event.py__init__   s    zEventObserver.__init__r   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.registerr   )argskwargsr   c                   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.triggerz&Callable[[CallbackType], CallbackType]c                   s   ddd fdd}|S )z:
        Decorator for registering event handlers
        r   r   c                   s     |  | S r   )r   r   r   r   r   wrapper1   s    
z'EventObserver.__call__.<locals>.wrapperr   )r   r   r   r   r   __call__,   s    zEventObserver.__call__N)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r	      s
   r	   N)

__future__r   typingr   r   r   r   r   r   r	   r   r   r   r   <module>   s   