a
    &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rDd dlm	Z	 nd dl
m	Z	 e jdkrhd 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ed fddZedddZe	e
 ed	d
ddZee	e
 gee f ee	e
 gee f d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   W/var/www/html/swiplay.fr/scambot/venv/lib/python3.9/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__N)argskwargsr   c                    s0   | 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   Zreceiverr   r   r   send,   s    zSignal.send)funcr   c                 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   Z
frozenlistr   version_infor	   typing_extensionsr   r   tupler   __version____all__r*   r   r   r   r   r   <module>   s   

