Skip to content

WrappedEvent

Bases: Generic[TEvent]

Wrapper for events with all relevant metadata.

Returned from EventStore when loading events from a stream.

Example usage:

class OrderCancelled(Event):
    order_id: OrderId

event = OrderCancelled(order_id=OrderId("#123"))
wrapped_event = WrappedEvent.wrap(event, version=1)

Source code in event_sourcery/event_store/event/dto.py
@dataclasses.dataclass()
class WrappedEvent(Generic[TEvent]):
    """Wrapper for events with all relevant metadata.

    Returned from EventStore when loading events from a stream.

    Example usage:
    ```
    class OrderCancelled(Event):
        order_id: OrderId

    event = OrderCancelled(order_id=OrderId("#123"))
    wrapped_event = WrappedEvent.wrap(event, version=1)
    ```
    """

    event: TEvent
    version: int | None
    uuid: UUID = dataclasses.field(default_factory=uuid4)
    created_at: datetime = dataclasses.field(
        default_factory=lambda: datetime.now(timezone.utc).replace(tzinfo=None)
    )
    context: Context = dataclasses.field(default_factory=Context)

    @classmethod
    def wrap(cls, event: TEvent, version: int | None) -> "WrappedEvent[TEvent]":
        return WrappedEvent[TEvent](event=event, version=version)