o
    3˜Žj  ã                   @   sÂ   d dl Z d dlmZmZmZmZ d dlmZ e jdkr"d dlm	Z	 nd dl
m	Z	 e jdkr4d dlmZ nd dl
mZ edƒZed	e	ed
  d�ZdZdZG dd„ deee	e gee f  ƒZdS )é    N)ÚAnyÚ	AwaitableÚCallableÚTypeVar)Ú
FrozenList)é   é   )ÚUnpack)r   é   )ÚTypeVarTupleÚ_TÚ_Ts© )Údefaultz1.4.0)ÚSignalc                       sˆ   e Zd ZdZdZdef‡ fdd„Zdefdd„Zd	e	e
 d
eddfdd„Zdee	e
 gee f dee	e
 gee f fdd„Z‡  ZS )r   z¼Coroutine-based signal implementation.

    To connect a callback to a signal, use any list method.

    Signals are fired using the send() coroutine, which takes named
    arguments.
    )Ú_ownerÚownerc                    s   t ƒ  ¡  || _d S )N)ÚsuperÚ__init__r   )Úselfr   ©Ú	__class__r   úO/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/aiosignal/__init__.pyr   #   s   

zSignal.__init__Úreturnc                 C   s   d  | j| jt| ƒ¡S )Nz"<Signal owner={}, frozen={}, {!r}>)Úformatr   ÚfrozenÚlist)r   r   r   r   Ú__repr__'   s   ÿzSignal.__repr__ÚargsÚkwargsNc                 Ï   s2   �| j stdƒ‚| D ]}||i |¤ŽI dH  q
dS )z9
        Sends data to all registered receivers.
        zCannot send non-frozen signal.N)r   ÚRuntimeError)r   r   r   Úreceiverr   r   r   Úsend,   s   €ÿzSignal.sendÚfuncc                 C   s   |   |¡ |S )z+Decorator to add a function to this Signal.)Úappend)r   r#   r   r   r   Ú__call__6   s   
zSignal.__call__)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__Úobjectr   Ústrr   r	   r   r   r"   r   r   r   r%   Ú__classcell__r   r   r   r   r      s    
ÿþr   )ÚsysÚtypingr   r   r   r   Ú
frozenlistr   Úversion_infor	   Útyping_extensionsr   r   Útupler   Ú__version__Ú__all__r+   r   r   r   r   r   Ú<module>   s    

*