zen_garden.plugin_system.events

Event utilities for the plugin system.

Provides a base Event enum and an EventPublisher to register and trigger events.

Classes

Event(value[, names, module, qualname, ...])

Base enum for plugin events.

EventPublisher()

Class to register and trigger events.

class zen_garden.plugin_system.events.Event(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)

Base enum for plugin events.

Extend this class to declare specific events used by plugins.

Example

>>> class Event(Enum):
>>>     after_model_construction = auto()

The event definition can be used as a decorator as:

>>> @EventPublisher.register(Event.after_model_construction)
>>> def any_function(any_arg):
>>>     pass

The event can be triggered in the core as:

>>> EventPublisher.trigger(Event.after_model_construction, any_arg)
class zen_garden.plugin_system.events.EventPublisher

Class to register and trigger events.

Observers are callables that can be registered to a specific event. When an event is triggered, all registered observers are invoked in registration order with the provided arguments.

Example

An observer is defined in a plugin module as a function decorated with EventPublisher.register:

>>> @EventPublisher.register(Event.after_model_construction)
>>> def any_function(any_arg):
>>>     pass
classmethod deregister_all()

Deregister all observers for all events.

classmethod observers()

Returns all observers registered.

classmethod register(event: Event)

Decorator that registers a callable as an observer for event.

Parameters:

event (Event) – The event value to register the observer for.

Returns:

A decorator which takes a function and registers it.

Return type:

Callable

classmethod trigger(event: Event, *args, **kwargs)

Trigger event and call all registered observers.

Parameters:
  • event (Event) – The event to trigger.

  • *args – Positional arguments passed to observer callables.

  • **kwargs – Keyword arguments passed to observer callables.