Source code for ds_common_serde_py_lib.errors

"""
**File:** ``errors.py``
**Region:** ``ds_common_serde_py_lib``

Description
-----------
Defines exception classes for (de)serialization operations.

Example
-------
.. code-block:: python

    from ds_common_serde_py_lib.errors import DeserializationError, SerializationError

    ser_exc = SerializationError()
    assert ser_exc.status_code == 500
    assert ser_exc.message == "Serialization failed"
    assert ser_exc.code == "DS_SERIALIZATION_ERROR"
    assert ser_exc.details == {}

    deser_exc = DeserializationError(details={"field": "name"})
    assert deser_exc.code == "DS_DESERIALIZATION_ERROR"
"""

from typing import Any


[docs] class SerdeError(Exception): """Base exception for ds-common-serde errors.""" def __init__( self, message: str, code: str, status_code: int = 500, details: dict[str, Any] | None = None, ) -> None: """ Create a serde exception. Args: message: Human-readable error message. code: Machine-readable error code. status_code: HTTP-ish status code associated with the error. details: Optional extra details to help diagnose the error. Example: >>> exc = SerdeError(message="Boom", code="DS_SERDE_ERROR") >>> exc.code 'DS_SERDE_ERROR' """ self.code = code self.status_code = status_code self.message = message self.details = details or {} super().__init__(self.message)
[docs] class SerializationError(SerdeError): """Exception raised when serialization fails.""" def __init__( self, message: str = "Serialization failed", code: str = "DS_SERIALIZATION_ERROR", status_code: int = 500, details: dict[str, Any] | None = None, ) -> None: super().__init__(message=message, code=code, status_code=status_code, details=details)
[docs] class DeserializationError(SerdeError): """Exception raised when deserialization fails.""" def __init__( self, message: str = "Deserialization failed", code: str = "DS_DESERIALIZATION_ERROR", status_code: int = 500, details: dict[str, Any] | None = None, ) -> None: """ Create a deserialization error. Args: message: Human-readable error message. code: Machine-readable error code. status_code: HTTP-ish status code associated with the error. details: Optional extra details to help diagnose the error. Example: >>> exc = DeserializationError() >>> exc.code 'DS_DESERIALIZATION_ERROR' """ super().__init__(message=message, code=code, status_code=status_code, details=details)