errors.py 729 B

1234567891011121314151617181920212223242526272829
  1. from __future__ import annotations
  2. from dataclasses import dataclass, field
  3. @dataclass
  4. class ConversionError(Exception):
  5. code: str
  6. message: str
  7. status_code: int = 500
  8. details: dict[str, object] = field(default_factory=dict)
  9. def __post_init__(self) -> None:
  10. super().__init__(self.message)
  11. def to_dict(self) -> dict[str, object]:
  12. payload: dict[str, object] = {
  13. "code": self.code,
  14. "message": self.message,
  15. }
  16. if self.details:
  17. payload["details"] = self.details
  18. return payload
  19. def __reduce__(self):
  20. return (
  21. self.__class__,
  22. (self.code, self.message, self.status_code, self.details),
  23. )