aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/litellm/proxy/common_utils/swagger_utils.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/litellm/proxy/common_utils/swagger_utils.py')
-rw-r--r--.venv/lib/python3.12/site-packages/litellm/proxy/common_utils/swagger_utils.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/litellm/proxy/common_utils/swagger_utils.py b/.venv/lib/python3.12/site-packages/litellm/proxy/common_utils/swagger_utils.py
new file mode 100644
index 00000000..75a64707
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/litellm/proxy/common_utils/swagger_utils.py
@@ -0,0 +1,48 @@
+from typing import Any, Dict
+
+from pydantic import BaseModel, Field
+
+from litellm.exceptions import LITELLM_EXCEPTION_TYPES
+
+
+class ErrorResponse(BaseModel):
+ detail: Dict[str, Any] = Field(
+ ...,
+ example={ # type: ignore
+ "error": {
+ "message": "Error message",
+ "type": "error_type",
+ "param": "error_param",
+ "code": "error_code",
+ }
+ },
+ )
+
+
+# Define a function to get the status code
+def get_status_code(exception):
+ if hasattr(exception, "status_code"):
+ return exception.status_code
+ # Default status codes for exceptions without a status_code attribute
+ if exception.__name__ == "Timeout":
+ return 408 # Request Timeout
+ if exception.__name__ == "APIConnectionError":
+ return 503 # Service Unavailable
+ return 500 # Internal Server Error as default
+
+
+# Create error responses
+ERROR_RESPONSES = {
+ get_status_code(exception): {
+ "model": ErrorResponse,
+ "description": exception.__doc__ or exception.__name__,
+ }
+ for exception in LITELLM_EXCEPTION_TYPES
+}
+
+# Ensure we have a 500 error response
+if 500 not in ERROR_RESPONSES:
+ ERROR_RESPONSES[500] = {
+ "model": ErrorResponse,
+ "description": "Internal Server Error",
+ }