EventSubscriber

Module: eventspype.sub.subscriber


EventSubscriber

class EventSubscriber

Abstract base class for all event subscribers. Subclass it and implement call.

Methods

call (abstract)

@abstractmethod
def call(
    self,
    arg: Any,
    current_event_tag: int,
    current_event_caller: Any,
) -> None

Handle an incoming event. Called by the publisher for each dispatched event.

Parameter Type Description
arg Any The event object
current_event_tag int Normalized integer event tag
current_event_caller Any The publisher that dispatched the event

__call__

def __call__(
    self, arg: Any, current_event_tag: int, current_event_caller: Any
) -> None

Makes the subscriber callable. Delegates to call. Publishers invoke subscribers via this method.

Example

from eventspype import EventSubscriber

class PrintSubscriber(EventSubscriber):
    def call(self, event, event_tag, caller):
        print(f"[tag={event_tag}] {event}")

OwnedEventSubscriber

Module: eventspype.sub.subscriber

class OwnedEventSubscriber(EventSubscriber):
    def __init__(self, owner: Any) -> None

A subscriber that holds a reference to an owning object. Useful for inline subscriber creation where the subscriber needs access to an enclosing context.

Parameters

Parameter Type Description
owner Any The object that owns this subscriber

Properties

Property Type Description
owner Any The owner object passed at construction

Example

from eventspype import OwnedEventSubscriber, EventPublisher

class MyService:
    def __init__(self, publisher: EventPublisher) -> None:
        self._subscriber = _ServiceSubscriber(owner=self)
        publisher.add_subscriber(self._subscriber)

class _ServiceSubscriber(OwnedEventSubscriber):
    def call(self, event, event_tag, caller):
        self.owner.handle_event(event)