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
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-15 18:57 +0800
1"""Domain value objects for idempotency data."""
3from __future__ import annotations
5from dataclasses import dataclass, field
6from enum import StrEnum, auto
7from typing import TYPE_CHECKING, Any
9if TYPE_CHECKING:
10 from datetime import datetime
13class IdempotencyStatus(StrEnum):
14 """Lifecycle status for idempotency records."""
16 PENDING = auto()
17 COMPLETE = auto()
18 EXPIRED = auto()
21@dataclass(frozen=True)
22class IdempotencyRecord:
23 """Immutable snapshot of an idempotency entry."""
25 key: str
26 result: Any
27 created_at: datetime
28 expires_at: datetime
29 status: IdempotencyStatus = field(default=IdempotencyStatus.PENDING)
32__all__ = [
33 "IdempotencyRecord",
34 "IdempotencyStatus",
35]