Coverage for src / lexigram / contracts / domain / idempotency.py: 0%

16 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-08-15 18:57 +0800

1"""Domain value objects for idempotency data.""" 

2 

3from __future__ import annotations 

4 

5from dataclasses import dataclass, field 

6from enum import StrEnum, auto 

7from typing import TYPE_CHECKING, Any 

8 

9if TYPE_CHECKING: 

10 from datetime import datetime 

11 

12 

13class IdempotencyStatus(StrEnum): 

14 """Lifecycle status for idempotency records.""" 

15 

16 PENDING = auto() 

17 COMPLETE = auto() 

18 EXPIRED = auto() 

19 

20 

21@dataclass(frozen=True) 

22class IdempotencyRecord: 

23 """Immutable snapshot of an idempotency entry.""" 

24 

25 key: str 

26 result: Any 

27 created_at: datetime 

28 expires_at: datetime 

29 status: IdempotencyStatus = field(default=IdempotencyStatus.PENDING) 

30 

31 

32__all__ = [ 

33 "IdempotencyRecord", 

34 "IdempotencyStatus", 

35]