o
    h                     @   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   zCoroutine-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   H/var/www/html/ai/venv/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    

*