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.