pydispatch.dispatch module¶
Dispatcher class¶
-
class
Dispatcher
(*args, **kwargs)[source]¶ Core class used to enable all functionality in the library
Interfaces with
Event
andProperty
objects upon instance creation.Events can be created by calling
register_event()
or by the subclass definition:class Foo(Dispatcher): _events_ = ['awesome_event', 'on_less_awesome_event']
Once defined, an event can be dispatched to listeners by calling
emit()
.-
bind
(**kwargs)[source]¶ Subscribes to events or to
Property
updatesKeyword arguments are used with the Event or Property names as keys and the callbacks as values:
class Foo(Dispatcher): name = Property() foo = Foo() foo.bind(name=my_listener.on_foo_name_changed) foo.bind(name=other_listener.on_name, value=other_listener.on_value)
The callbacks are stored as weak references and their order is not maintained relative to the order of binding.
-
emission_lock
(name)[source]¶ Holds emission of events and dispatches the last event on release
The context manager returned will store the last event data called by
emit()
and prevent callbacks until it exits. On exit, it will dispatch the last event captured (if any):class Foo(Dispatcher): _events_ = ['my_event'] def on_my_event(value): print(value) foo = Foo() foo.bind(my_event=on_my_event) with foo.emission_lock('my_event'): foo.emit('my_event', 1) foo.emit('my_event', 2) >>> 2
Parameters: name (str) – The name of the Event
orProperty
Returns: A context manager to be used by the with
statement.If available, this will also be an async context manager to be used with the
async with
statement (see PEP 492).Note
The context manager is re-entrant, meaning that multiple calls to this method within nested context scopes are possible.
-
emit
(name, *args, **kwargs)[source]¶ Dispatches an event to any subscribed listeners
Note
If a listener returns
False
, the event will stop dispatching to other listeners. Any other return value is ignored.Parameters:
-
register_event
(*names)[source]¶ Registers new events after instance creation
Parameters: *names (str) – Name or names of the events to register
-
unbind
(*args)[source]¶ Unsubscribes from events or
Property
updatesMultiple arguments can be given. Each of which can be either the method that was used for the original call to
bind()
or an instance object.If an instance of an object is supplied, any previously bound Events and Properties will be ‘unbound’.
-