Source code for ezmsg.dashboard.backend.models.events
from __future__ import annotations
from typing import Any, Literal, TypeAlias
from pydantic import BaseModel
[docs]
class TopologyChangedPayload(BaseModel):
seq: int
event_type: str
timestamp: float
changed_topics: list[str]
source_session_id: str | None = None
source_process_id: str | None = None
[docs]
class SettingsValuePayload(BaseModel):
repr_value: dict[str, Any] | str
structured_value: dict[str, Any] | None = None
settings_schema: dict[str, Any] | None = None
serialized_present: bool = False
[docs]
class SettingsChangedPayload(BaseModel):
seq: int
event_type: str
component_address: str
timestamp: float
source_session_id: str | None = None
source_process_id: str | None = None
value: SettingsValuePayload
[docs]
class ProfilingTracePayload(BaseModel):
timestamp: float
batches: dict[str, dict[str, Any]]
[docs]
class SystemReadyPayload(BaseModel):
timestamp: float
message: str
[docs]
class SystemHeartbeatPayload(BaseModel):
timestamp: float
[docs]
class SystemErrorPayload(BaseModel):
timestamp: float
message: str
[docs]
class TopologyChangedEnvelope(BaseModel):
kind: Literal["topology.changed"]
data: TopologyChangedPayload
[docs]
class SettingsChangedEnvelope(BaseModel):
kind: Literal["settings.changed"]
data: SettingsChangedPayload
[docs]
class ProfilingTraceEnvelope(BaseModel):
kind: Literal["profiling.trace"]
data: ProfilingTracePayload
[docs]
class SystemReadyEnvelope(BaseModel):
kind: Literal["system.ready"]
data: SystemReadyPayload
[docs]
class SystemHeartbeatEnvelope(BaseModel):
kind: Literal["system.heartbeat"]
data: SystemHeartbeatPayload
[docs]
class SystemErrorEnvelope(BaseModel):
kind: Literal["system.error"]
data: SystemErrorPayload
EventEnvelopeModel: TypeAlias = (
TopologyChangedEnvelope
| SettingsChangedEnvelope
| ProfilingTraceEnvelope
| SystemReadyEnvelope
| SystemHeartbeatEnvelope
| SystemErrorEnvelope
)