HEX
Server: Apache
System: Linux srv13.cpanelhost.cl 3.10.0-962.3.2.lve1.5.38.el7.x86_64 #1 SMP Thu Jun 18 05:28:41 EDT 2020 x86_64
User: cca63905 (4205)
PHP: 7.3.20
Disabled: NONE
Upload Files
File: //proc/self/root/opt/alt/python35/lib64/python3.5/site-packages/aiohttp/signals.py
from aiohttp.frozenlist import FrozenList


__all__ = ('Signal',)


class Signal(FrozenList):
    """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.
    """

    __slots__ = ('_owner',)

    def __init__(self, owner):
        super().__init__()
        self._owner = owner

    def __repr__(self):
        return '<Signal owner={}, frozen={}, {!r}>'.format(self._owner,
                                                           self.frozen,
                                                           list(self))

    async def send(self, *args, **kwargs):
        """
        Sends data to all registered receivers.
        """
        if not self.frozen:
            raise RuntimeError("Cannot send non-frozen signal.")

        for receiver in self:
            await receiver(*args, **kwargs)