Signal class (third-party)¶
blinker.Signal
¶
A notification emitter.
:param doc: The docstring for the signal.
Source code in blinker/base.py
ANY
class-attribute
instance-attribute
¶
ANY = ANY
An alias for the :data:~blinker.ANY sender symbol.
set_class
class-attribute
instance-attribute
¶
The set class to use for tracking connected receivers and senders.
Python's set is unordered. If receivers must be dispatched in the order
they were connected, an ordered set implementation can be used.
.. versionadded:: 1.7
receiver_connected
cached
property
¶
Emitted at the end of each :meth:connect call.
The signal sender is the signal instance, and the :meth:connect
arguments are passed through: receiver, sender, and weak.
.. versionadded:: 1.2
receiver_disconnected
cached
property
¶
Emitted at the end of each :meth:disconnect call.
The sender is the signal instance, and the :meth:disconnect arguments
are passed through: receiver and sender.
This signal is emitted only when :meth:disconnect is called
explicitly. This signal cannot be emitted by an automatic disconnect
when a weakly referenced receiver or sender goes out of scope, as the
instance is no longer be available to be used as the sender for this
signal.
An alternative approach is available by subscribing to
:attr:receiver_connected and setting up a custom weakref cleanup
callback on weak receivers and senders.
.. versionadded:: 1.2
receivers
instance-attribute
¶
The map of connected receivers. Useful to quickly check if any
receivers are connected to the signal: if s.receivers:. The
structure and data is not part of the public API, but checking its
boolean value is.
connect
¶
connect(receiver, sender=ANY, weak=True)
Connect receiver to be called when the signal is sent by
sender.
:param receiver: The callable to call when :meth:send is called with
the given sender, passing sender as a positional argument
along with any extra keyword arguments.
:param sender: Any object or :data:ANY. receiver will only be
called when :meth:send is called with this sender. If ANY, the
receiver will be called for any sender. A receiver may be connected
to multiple senders by calling :meth:connect multiple times.
:param weak: Track the receiver with a :mod:weakref. The receiver will
be automatically disconnected when it is garbage collected. When
connecting a receiver defined within a function, set to False,
otherwise it will be disconnected when the function scope ends.
Source code in blinker/base.py
connect_via
¶
Connect the decorated function to be called when the signal is sent
by sender.
The decorated function will be called when :meth:send is called with
the given sender, passing sender as a positional argument along
with any extra keyword arguments.
:param sender: Any object or :data:ANY. receiver will only be
called when :meth:send is called with this sender. If ANY, the
receiver will be called for any sender. A receiver may be connected
to multiple senders by calling :meth:connect multiple times.
:param weak: Track the receiver with a :mod:weakref. The receiver will
be automatically disconnected when it is garbage collected. When
connecting a receiver defined within a function, set to False,
otherwise it will be disconnected when the function scope ends.=
.. versionadded:: 1.1
Source code in blinker/base.py
connected_to
¶
connected_to(receiver, sender=ANY)
A context manager that temporarily connects receiver to the
signal while a with block executes. When the block exits, the
receiver is disconnected. Useful for tests.
:param receiver: The callable to call when :meth:send is called with
the given sender, passing sender as a positional argument
along with any extra keyword arguments.
:param sender: Any object or :data:ANY. receiver will only be
called when :meth:send is called with this sender. If ANY, the
receiver will be called for any sender.
.. versionadded:: 1.1
Source code in blinker/base.py
muted
¶
A context manager that temporarily disables the signal. No receivers
will be called if the signal is sent, until the with block exits.
Useful for tests.
Source code in blinker/base.py
send
¶
Call all receivers that are connected to the given sender
or :data:ANY. Each receiver is called with sender as a positional
argument along with any extra keyword arguments. Return a list of
(receiver, return value) tuples.
The order receivers are called is undefined, but can be influenced by
setting :attr:set_class.
If a receiver raises an exception, that exception will propagate up. This makes debugging straightforward, with an assumption that correctly implemented receivers will not raise.
:param sender: Call receivers connected to this sender, in addition to
those connected to :data:ANY.
:param _async_wrapper: Will be called on any receivers that are async
coroutines to turn them into sync callables. For example, could run
the receiver with an event loop.
:param kwargs: Extra keyword arguments to pass to each receiver.
.. versionchanged:: 1.7
Added the _async_wrapper argument.
Source code in blinker/base.py
send_async
async
¶
Await all receivers that are connected to the given sender
or :data:ANY. Each receiver is called with sender as a positional
argument along with any extra keyword arguments. Return a list of
(receiver, return value) tuples.
The order receivers are called is undefined, but can be influenced by
setting :attr:set_class.
If a receiver raises an exception, that exception will propagate up. This makes debugging straightforward, with an assumption that correctly implemented receivers will not raise.
:param sender: Call receivers connected to this sender, in addition to
those connected to :data:ANY.
:param _sync_wrapper: Will be called on any receivers that are sync
callables to turn them into async coroutines. For example,
could call the receiver in a thread.
:param kwargs: Extra keyword arguments to pass to each receiver.
.. versionadded:: 1.7
Source code in blinker/base.py
has_receivers_for
¶
Check if there is at least one receiver that will be called with the
given sender. A receiver connected to :data:ANY will always be
called, regardless of sender. Does not check if weakly referenced
receivers are still live. See :meth:receivers_for for a stronger
search.
:param sender: Check for receivers connected to this sender, in addition
to those connected to :data:ANY.
Source code in blinker/base.py
receivers_for
¶
Yield each receiver to be called for sender, in addition to those
to be called for :data:ANY. Weakly referenced receivers that are not
live will be disconnected and skipped.
:param sender: Yield receivers connected to this sender, in addition
to those connected to :data:ANY.
Source code in blinker/base.py
disconnect
¶
disconnect(receiver, sender=ANY)
Disconnect receiver from being called when the signal is sent by
sender.
:param receiver: A connected receiver callable. :param sender: Disconnect from only this sender. By default, disconnect from all senders.
Source code in blinker/base.py
Further documentation¶
Blinker is a third-party library, more documentation is under:
Note: in earlier versions edgy implemented signals itself, so there are maybe some wrong examples lingering around.