aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/postgrest/exceptions.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/postgrest/exceptions.py')
-rw-r--r--.venv/lib/python3.12/site-packages/postgrest/exceptions.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/postgrest/exceptions.py b/.venv/lib/python3.12/site-packages/postgrest/exceptions.py
new file mode 100644
index 00000000..303c5705
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/postgrest/exceptions.py
@@ -0,0 +1,50 @@
+from typing import Dict, Optional
+
+
+class APIError(Exception):
+ """
+ Base exception for all API errors.
+ """
+
+ _raw_error: Dict[str, str]
+ message: Optional[str]
+ """The error message."""
+ code: Optional[str]
+ """The error code."""
+ hint: Optional[str]
+ """The error hint."""
+ details: Optional[str]
+ """The error details."""
+
+ def __init__(self, error: Dict[str, str]) -> None:
+ self._raw_error = error
+ self.message = error.get("message")
+ self.code = error.get("code")
+ self.hint = error.get("hint")
+ self.details = error.get("details")
+ Exception.__init__(self, str(self))
+
+ def __repr__(self) -> str:
+ error_text = f"Error {self.code}:" if self.code else ""
+ message_text = f"\nMessage: {self.message}" if self.message else ""
+ hint_text = f"\nHint: {self.hint}" if self.hint else ""
+ details_text = f"\nDetails: {self.details}" if self.details else ""
+ complete_error_text = f"{error_text}{message_text}{hint_text}{details_text}"
+ return complete_error_text or "Empty error"
+
+ def json(self) -> Dict[str, str]:
+ """Convert the error into a dictionary.
+
+ Returns:
+ :class:`dict`
+ """
+ return self._raw_error
+
+
+def generate_default_error_message(r):
+ return {
+ "message": "JSON could not be generated",
+ "code": r.status_code,
+ "hint": "Refer to full message for details",
+ "details": str(r.content),
+ }