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

1"""Event version-skew data types for LXF-006. 

2 

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""" 

6 

7from __future__ import annotations 

8 

9from dataclasses import dataclass 

10from datetime import datetime 

11 

12 

13@dataclass(frozen=True, slots=True) 

14class EventTypeVersion: 

15 """A known event type + schema version pair that a consumer declares.""" 

16 

17 event_type: str 

18 schema_version: int 

19 

20 

21@dataclass(frozen=True, slots=True) 

22class UnknownEventTypeReceived: 

23 """Emitted when an incoming event has a type not in the consumer's known set.""" 

24 

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 

31 

32 

33@dataclass(frozen=True, slots=True) 

34class EventSchemaVersionSkew: 

35 """Emitted when an incoming event type is known but its version is not.""" 

36 

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 

45 

46 

47__all__ = [ 

48 "EventSchemaVersionSkew", 

49 "EventTypeVersion", 

50 "UnknownEventTypeReceived", 

51]