diff options
| author | Roberto Bertó <463349+robertoberto@users.noreply.github.com> | 2025-11-02 19:55:55 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-02 19:55:55 -0300 |
| commit | 6ca1269b138696b69c33d2db4bcf7dd03ea4caeb (patch) | |
| tree | 4c0a634730df2123ff506252cbec050de006dac8 /pyvyos/exceptions.py | |
| parent | 1ada32975f0bb559ec7526e0dd545700dde1cb94 (diff) | |
| parent | 6b4e9015744ab8c9f17a6b8e23387cd676b1d827 (diff) | |
| download | pyvyos-6ca1269b138696b69c33d2db4bcf7dd03ea4caeb.tar.gz pyvyos-6ca1269b138696b69c33d2db4bcf7dd03ea4caeb.zip | |
Merge pull request #27 from vyos-contrib/feat/architecture-and-quality-improvements
feat: v0.4.0 - Architecture refactor, bug fixes, and quality improvem…
Diffstat (limited to 'pyvyos/exceptions.py')
| -rw-r--r-- | pyvyos/exceptions.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/pyvyos/exceptions.py b/pyvyos/exceptions.py new file mode 100644 index 0000000..5a79733 --- /dev/null +++ b/pyvyos/exceptions.py @@ -0,0 +1,33 @@ +"""PyVyOS exception hierarchy for typed error handling.""" + + +class SDKError(Exception): + """Base exception for all PyVyOS SDK errors.""" + pass + + +class HttpError(SDKError): + """HTTP-level errors (network, timeout, status codes).""" + + def __init__(self, status: int, message: str): + self.status = status + self.message = message + super().__init__(f"HTTP Error {status}: {message}") + + +class ApiError(SDKError): + """API-level errors (when VyOS API returns success=False).""" + + def __init__(self, message: str, details: dict = None): + self.message = message + self.details = details + super().__init__(message) + + +class ValidationError(SDKError): + """Client-side validation errors (invalid parameters).""" + + def __init__(self, message: str): + self.message = message + super().__init__(message) + |
