from typing import Optional class AppException(Exception): """ Base class for application specific exceptions that can also be used as API error responses. """ code: str = 'unspecified_error' status_code: int = 400 message: str def __init__(self, message: str, *, code: Optional[str] = None, status_code: Optional[int] = None): if code is not None: self.code = code if status_code is not None: self.status_code = status_code self.message = message def to_dict(self) -> dict: return { 'code': self.code, 'message': self.message, }