summaryrefslogtreecommitdiff
path: root/pyvyos/exceptions.py
diff options
context:
space:
mode:
authorRoberto Bertó <463349+robertoberto@users.noreply.github.com>2025-11-02 19:55:55 -0300
committerGitHub <noreply@github.com>2025-11-02 19:55:55 -0300
commit6ca1269b138696b69c33d2db4bcf7dd03ea4caeb (patch)
tree4c0a634730df2123ff506252cbec050de006dac8 /pyvyos/exceptions.py
parent1ada32975f0bb559ec7526e0dd545700dde1cb94 (diff)
parent6b4e9015744ab8c9f17a6b8e23387cd676b1d827 (diff)
downloadpyvyos-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.py33
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)
+