o
    FÆhv  ã                   @   sx   d dl Z d dlmZmZmZmZmZmZmZm	Z	 d dl
mZmZmZ d dlmZ d dlmZ G dd„ deee  ƒZdS )é    N)ÚAnyÚCallableÚDictÚListÚOptionalÚSequenceÚUnionÚoverload)ÚMiddlewareEventTypeÚMiddlewareTypeÚNextMiddlewareType)ÚCallbackType)ÚTelegramObjectc                	   @   s  e Zd Zddd„Zdee dee fdd„Zdee ddfdd	„Z	ddeee  de	e
ee gee f ee f fd
d„Zededee fdd„ƒZededeee  fdd„ƒZde	eef de	ee eee  f fdd„Zdefdd„Zedeee  dedee fdd„ƒZdS )ÚMiddlewareManagerÚreturnNc                 C   s
   g | _ d S ©N©Ú_middlewares©Úself© r   úY/var/www/html/venv/lib/python3.10/site-packages/aiogram/dispatcher/middlewares/manager.pyÚ__init__   ó   
zMiddlewareManager.__init__Ú
middlewarec                 C   s   | j  |¡ |S r   )r   Úappend©r   r   r   r   r   Úregister   s   zMiddlewareManager.registerc                 C   s   | j  |¡ d S r   )r   Úremover   r   r   r   Ú
unregister   s   zMiddlewareManager.unregisterc                 C   s   |d u r| j S |   |¡S r   )r   r   r   r   r   Ú__call__   s   
zMiddlewareManager.__call__Úitemc                 C   ó   d S r   r   ©r   r!   r   r   r   Ú__getitem__&   ó   zMiddlewareManager.__getitem__c                 C   r"   r   r   r#   r   r   r   r$   *   r%   c                 C   s
   | j | S r   r   r#   r   r   r   r$   .   s   
c                 C   s
   t | jƒS r   )Úlenr   r   r   r   r   Ú__len__3   r   zMiddlewareManager.__len__ÚmiddlewaresÚhandlerc                    sN   t  ˆ ¡dtdtttf dtf‡ fdd„ƒ}|}t| ƒD ]}t  ||¡}q|S )NÚeventÚkwargsr   c                    s   ˆ | fi |¤ŽS r   r   )r*   r+   ©r)   r   r   Úhandler_wrapper:   s   z;MiddlewareManager.wrap_middlewares.<locals>.handler_wrapper)Ú	functoolsÚwrapsr   r   Ústrr   ÚreversedÚpartial)r(   r)   r-   r   Úmr   r,   r   Úwrap_middlewares6   s   $z"MiddlewareManager.wrap_middlewares)r   Nr   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r    r	   Úintr$   Úslicer   r'   Ústaticmethodr
   r   r   r4   r   r   r   r   r      sH    
þ
ýþ
þÿÿ
ý
ÿ
þ
ÿÿþr   )r.   Útypingr   r   r   r   r   r   r   r	   Úaiogram.dispatcher.event.basesr
   r   r   Ú aiogram.dispatcher.event.handlerr   Úaiogram.typesr   r   r   r   r   r   Ú<module>   s    (