event_bus#

class BusSubscriberMixin(bus: EventBus)[source]#

Bases: object

publish(event) None[source]#
subscribe(event_type: Type[Evt], handler: Callable[[Evt], None], *, allow_unsafe: bool = False) None[source]#
unsubscribe_all() None[source]#
class EventBus[source]#

Bases: object

Minimal, thread-safe publisher/subscriber for Events.

bridge_to_qt(forwarder: Callable[[Type[Any], Any], None]) None[source]#

Optionally forward all events to a Qt slot/signal.

publish(event: Evt) None[source]#

Publish a concrete event instance. Dispatch is on its exact class. (No inheritance walk for determinism/perf.)

subscribe(event_type: Type[Evt], callback: Callable[[Evt], None]) Callable[[], None][source]#

Subscribe a handler for a given event class. Handler signature: def handler(evt: EventType) -> None Returns: unsubscribe() callable.

class Publishes(*events: type)[source]#

Bases: object

Marker interface for classes that publish events. This is just a nice helper for documentation and introspection.