25 lines
675 B
Python
25 lines
675 B
Python
"""Domain-level exceptions for service and repository layers."""
|
|
|
|
from dataclasses import dataclass
|
|
from typing import Sequence
|
|
|
|
|
|
class EntityNotFoundError(Exception):
|
|
"""Raised when a requested entity cannot be located."""
|
|
|
|
|
|
class EntityConflictError(Exception):
|
|
"""Raised when attempting to create or update an entity that violates uniqueness."""
|
|
|
|
|
|
@dataclass(eq=False)
|
|
class ScenarioValidationError(Exception):
|
|
"""Raised when scenarios fail comparison validation rules."""
|
|
|
|
code: str
|
|
message: str
|
|
scenario_ids: Sequence[int] | None = None
|
|
|
|
def __str__(self) -> str: # pragma: no cover - mirrors message for logging
|
|
return self.message
|