sugar3.dispatch.dispatcher module¶
-
class
sugar3.dispatch.dispatcher.
Signal
(providing_args=None)¶ Bases:
object
Base class for all signals
- Internal attributes:
- receivers – { receriverkey (id) : weakref(receiver) }
-
connect
(receiver, sender=None, weak=True, dispatch_uid=None)¶ Connect receiver to sender for signal
- receiver – a function or an instance method which is to
receive signals. Receivers must be hashable objects.
if weak is True, then receiver must be weak-referencable (more precisely saferef.safeRef() must be able to create a reference to the receiver).
Receivers must be able to accept keyword arguments.
- If receivers have a dispatch_uid attribute, the receiver will
- not be added if another receiver already exists with that dispatch_uid.
- sender – the sender to which the receiver should respond
- Must either be of type Signal, or None to receive events from any sender.
- weak – whether to use weak references to the receiver
- By default, the module will attempt to use weak references to the receiver objects. If this parameter is false, then strong references will be used.
- dispatch_uid – an identifier used to uniquely identify a particular
- instance of a receiver. This will usually be a string, though it may be anything hashable.
returns None
-
disconnect
(receiver=None, sender=None, weak=True, dispatch_uid=None)¶ Disconnect receiver from sender for signal
- receiver – the registered receiver to disconnect. May be none if
- dispatch_uid is specified.
sender – the registered sender to disconnect weak – the weakref state to disconnect dispatch_uid – the unique identifier of the receiver to disconnect
disconnect reverses the process of connect.
- If weak references are used, disconnect need not be called.
- The receiver will be remove from dispatch automatically.
returns None
-
send
(sender, **named)¶ Send signal from sender to all connected receivers.
- sender – the sender of the signal
- Either a specific object or None.
named – named arguments which will be passed to receivers.
Returns a list of tuple pairs [(receiver, response), ... ].
If any receiver raises an error, the error propagates back through send, terminating the dispatch loop, so it is quite possible to not have all receivers called if a raises an error.
-
send_robust
(sender, **named)¶ Send signal from sender to all connected receivers catching errors
- sender – the sender of the signal
- Can be any python object (normally one registered with a connect if you actually want something to occur).
- named – named arguments which will be passed to receivers.
- These arguments must be a subset of the argument names defined in providing_args.
Return a list of tuple pairs [(receiver, response), ... ], may raise DispatcherKeyError
if any receiver raises an error (specifically any subclass of Exception), the error instance is returned as the result for that receiver.