mirror of
https://github.com/dograh-hq/dograh.git
synced 2026-06-13 08:15:21 +02:00
33 lines
1,006 B
Python
33 lines
1,006 B
Python
|
|
"""SDK-level exceptions.
|
||
|
|
|
||
|
|
All errors raised from `dograh_sdk` are subclasses of `DograhSdkError` so
|
||
|
|
calling code can catch them as one category.
|
||
|
|
"""
|
||
|
|
|
||
|
|
|
||
|
|
class DograhSdkError(Exception):
|
||
|
|
"""Base class for all SDK errors."""
|
||
|
|
|
||
|
|
|
||
|
|
class ValidationError(DograhSdkError):
|
||
|
|
"""Raised when node data fails client-side validation (unknown field,
|
||
|
|
missing required field, obvious type mismatch).
|
||
|
|
|
||
|
|
Server-side Pydantic validation runs on save and may raise further
|
||
|
|
errors via `ApiError` — this class covers the fast-fail cases caught
|
||
|
|
at the `Workflow.add()` call site.
|
||
|
|
"""
|
||
|
|
|
||
|
|
|
||
|
|
class ApiError(DograhSdkError):
|
||
|
|
"""Raised when the Dograh backend returns a non-2xx response."""
|
||
|
|
|
||
|
|
def __init__(self, status_code: int, message: str, body: object = None):
|
||
|
|
super().__init__(f"[{status_code}] {message}")
|
||
|
|
self.status_code = status_code
|
||
|
|
self.body = body
|
||
|
|
|
||
|
|
|
||
|
|
class SpecMismatchError(DograhSdkError):
|
||
|
|
"""Raised when a referenced node type isn't registered on the server."""
|