Source code for ds_provider_mock_py_lib.errors

"""
**File:** ``errors.py``
**Region:** ``ds_provider_mock_py_lib/errors``

Mock backend exceptions and status-code helpers.

Example:
    >>> from ds_provider_mock_py_lib.errors import MockBackendError, resolve_status_code
    >>> from ds_resource_plugin_py_lib.common.resource.linked_service.errors import LinkedServiceException
    >>> resolve_status_code(None, default=503)
    503
    >>> err = MockBackendError("boom", code="DS_LINKED_SERVICE_CONNECTION_ERROR", status_code=502)
    >>> err.status_code
    502
    >>> isinstance(err, LinkedServiceException)
    True
"""

from __future__ import annotations

from typing import Any

from ds_resource_plugin_py_lib.common.resource.linked_service.errors import LinkedServiceException


[docs] class MockBackendError(LinkedServiceException): """ Failure raised by ``MockBackend.request()``. This is a linked-service contract error (``LinkedServiceException``). Dataset ``read()`` must wrap it as ``ReadError`` so it does not leak to dataset callers. """ def __init__( self, message: str = "Mock backend operation failed", code: str = "DS_LINKED_SERVICE_MOCK_ERROR", status_code: int = 500, details: dict[str, Any] | None = None, ) -> None: """ Initialize a mock backend error. Args: message: Human-readable error message. code: Machine-readable error code. status_code: HTTP-style status code carried by the backend error. details: Optional debugging context. """ super().__init__(message, code, status_code, details)
[docs] def resolve_status_code(status_code: int | None, default: int) -> int: """ Return ``status_code`` when set, otherwise ``default``. Args: status_code: Optional HTTP-style status code from settings. default: Fallback used when ``status_code`` is ``None``. Returns: A concrete integer status code. """ if status_code is None: return default return status_code