This commit is contained in:
Ishaan Jaffer
2025-09-20 09:28:15 -07:00
parent 374a903ff0
commit 7236202e41
2 changed files with 34 additions and 9 deletions
@@ -1307,21 +1307,35 @@ def exception_type( # type: ignore # noqa: PLR0915
if original_exception.status_code == 401:
exception_mapping_worked = True
raise AuthenticationError(
message=f"{custom_llm_provider.capitalize()}Exception - {original_exception.message}",
message=f"{custom_llm_provider.capitalize()}Exception - {error_str}",
llm_provider=custom_llm_provider,
model=model,
)
if original_exception.status_code == 403:
exception_mapping_worked = True
raise PermissionDeniedError(
message=f"{custom_llm_provider.capitalize()}Exception - {error_str}",
llm_provider=custom_llm_provider,
model=model,
response=httpx.Response(
status_code=403,
request=httpx.Request(
method="POST",
url="https://cloud.google.com/vertex-ai/",
),
),
)
if original_exception.status_code == 404:
exception_mapping_worked = True
raise NotFoundError(
message=f"{custom_llm_provider.capitalize()}Exception - {original_exception.message}",
message=f"{custom_llm_provider.capitalize()}Exception - {error_str}",
llm_provider=custom_llm_provider,
model=model,
)
if original_exception.status_code == 408:
exception_mapping_worked = True
raise Timeout(
message=f"{custom_llm_provider.capitalize()}Exception - {original_exception.message}",
message=f"{custom_llm_provider.capitalize()}Exception - {error_str}",
llm_provider=custom_llm_provider,
model=model,
)
@@ -1329,7 +1343,7 @@ def exception_type( # type: ignore # noqa: PLR0915
if original_exception.status_code == 429:
exception_mapping_worked = True
raise RateLimitError(
message=f"litellm.RateLimitError: {custom_llm_provider}Exception - {error_str}",
message=f"litellm.RateLimitError: {custom_llm_provider.capitalize()}Exception - {error_str}",
model=model,
llm_provider=custom_llm_provider,
litellm_debug_info=extra_information,
@@ -1354,10 +1368,17 @@ def exception_type( # type: ignore # noqa: PLR0915
request=httpx.Request(method="completion", url="https://github.com/BerriAI/litellm"), # type: ignore
),
)
if original_exception.status_code == 502:
exception_mapping_worked = True
raise APIConnectionError(
message=f"{custom_llm_provider.capitalize()}Exception - {error_str}",
llm_provider=custom_llm_provider,
model=model,
)
if original_exception.status_code == 503:
exception_mapping_worked = True
raise ServiceUnavailableError(
message=f"{custom_llm_provider.capitalize()}Exception - {original_exception.message}",
message=f"{custom_llm_provider.capitalize()}Exception - {error_str}",
llm_provider=custom_llm_provider,
model=model,
)
+8 -4
View File
@@ -1009,10 +1009,10 @@ def test_gemini_exception_message_format():
(408, "Timeout"),
(429, "RateLimitError"),
(500, "InternalServerError"),
(502, "InternalServerError"),
(503, "InternalServerError"),
(502, "APIConnectionError"),
(503, "ServiceUnavailableError"),
])
def test_gemini_comprehensive_error_handling(status_code, expected_exception):
def l(status_code, expected_exception):
"""
Test comprehensive Gemini error handling for all HTTP status codes.
@@ -1024,7 +1024,7 @@ def test_gemini_comprehensive_error_handling(status_code, expected_exception):
from litellm.litellm_core_utils.exception_mapping_utils import exception_type
from litellm.exceptions import (
BadRequestError, AuthenticationError, PermissionDeniedError, NotFoundError,
Timeout, RateLimitError, InternalServerError
Timeout, RateLimitError, InternalServerError, APIConnectionError, ServiceUnavailableError
)
# Mock the appropriate error response
@@ -1041,6 +1041,8 @@ def test_gemini_comprehensive_error_handling(status_code, expected_exception):
)
mock_exception.response = mock_response
mock_exception.status_code = status_code
# Set message attribute for compatibility with exception mapping
mock_exception.message = f"HTTP {status_code}"
# Test the exception mapping
try:
@@ -1062,6 +1064,8 @@ def test_gemini_comprehensive_error_handling(status_code, expected_exception):
"Timeout": Timeout,
"RateLimitError": RateLimitError,
"InternalServerError": InternalServerError,
"APIConnectionError": APIConnectionError,
"ServiceUnavailableError": ServiceUnavailableError,
}
expected_class = exception_classes[expected_exception]
assert isinstance(e, expected_class), f"Expected {expected_exception}, got {type(e).__name__}"