Skip to content

WrappedEvent

Bases: Generic[TEvent]

Wrapper for events with all relevant metadata.

Returned from EventStore when loading events from a stream.

Attributes:

Name Type Description
event TEvent

The event instance.

version int | None

Version of the event in the stream (if applicable).

uuid UUID

Unique identifier of the event instance.

created_at datetime

Timestamp when the event was created.

context Context

Context object containing additional metadata.

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.

    Attributes:
        event (TEvent): The event instance.
        version (int | None): Version of the event in the stream (if applicable).
        uuid (UUID): Unique identifier of the event instance.
        created_at (datetime): Timestamp when the event was created.
        context (Context): Context object containing additional metadata.

    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)