Coverage for src / lexigram / contracts / events / version_skew.py: 0%
26 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-15 18:57 +0800
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-15 18:57 +0800
1"""Event version-skew data types for LXF-006.
3Defines the type for declaring a known event version pair and the two
4alert payloads emitted when an unknown type or version is received.
5"""
7from __future__ import annotations
9from dataclasses import dataclass
10from datetime import datetime
13@dataclass(frozen=True, slots=True)
14class EventTypeVersion:
15 """A known event type + schema version pair that a consumer declares."""
17 event_type: str
18 schema_version: int
21@dataclass(frozen=True, slots=True)
22class UnknownEventTypeReceived:
23 """Emitted when an incoming event has a type not in the consumer's known set."""
25 consumer_id: str
26 event_type: str
27 schema_version: int
28 event_id: str
29 tenant_id: str | None
30 received_at: datetime
33@dataclass(frozen=True, slots=True)
34class EventSchemaVersionSkew:
35 """Emitted when an incoming event type is known but its version is not."""
37 consumer_id: str
38 event_type: str
39 received_version: int
40 known_versions: frozenset[int]
41 upcast_attempted: bool
42 event_id: str
43 tenant_id: str | None
44 received_at: datetime
47__all__ = [
48 "EventSchemaVersionSkew",
49 "EventTypeVersion",
50 "UnknownEventTypeReceived",
51]