python-domain-events

Base classes for internal (in-process) domain events with tracing.

Installation

pip install python-domain-events

Public API

Class

Purpose

BaseDomainEvent

Pydantic base for domain events

IDomainEventHandler[TEvent]

Handler interface with handle(event)

InProcessEventDispatcher

Dispatches events to registered handlers

Usage

from python_domain_events import BaseDomainEvent, IDomainEventHandler
from python_domain_events import InProcessEventDispatcher

class UserCreated(BaseDomainEvent):
    event_type: str = "user_created"
    user_id: int

class NotifyHandler(IDomainEventHandler[UserCreated]):
    def handle(self, event: UserCreated) -> None:
        print(f"User {event.user_id} created")

dispatcher = InProcessEventDispatcher()
dispatcher.register(UserCreated, NotifyHandler())
dispatcher.dispatch(UserCreated(event_type="user_created", user_id=1))