Spaces:
Runtime error
Runtime error
| from typing import Dict | |
| # Text Generation Inference Errors | |
| class ValidationError(Exception): | |
| def __init__(self, message: str): | |
| super().__init__(message) | |
| class GenerationError(Exception): | |
| def __init__(self, message: str): | |
| super().__init__(message) | |
| class OverloadedError(Exception): | |
| def __init__(self, message: str): | |
| super().__init__(message) | |
| class IncompleteGenerationError(Exception): | |
| def __init__(self, message: str): | |
| super().__init__(message) | |
| # API Inference Errors | |
| class BadRequestError(Exception): | |
| def __init__(self, message: str): | |
| super().__init__(message) | |
| class ShardNotReadyError(Exception): | |
| def __init__(self, message: str): | |
| super().__init__(message) | |
| class ShardTimeoutError(Exception): | |
| def __init__(self, message: str): | |
| super().__init__(message) | |
| class NotFoundError(Exception): | |
| def __init__(self, message: str): | |
| super().__init__(message) | |
| class RateLimitExceededError(Exception): | |
| def __init__(self, message: str): | |
| super().__init__(message) | |
| class NotSupportedError(Exception): | |
| def __init__(self, model_id: str): | |
| message = ( | |
| f"Model `{model_id}` is not available for inference with this client. \n" | |
| "Use `huggingface_hub.inference_api.InferenceApi` instead." | |
| ) | |
| super(NotSupportedError, self).__init__(message) | |
| # Unknown error | |
| class UnknownError(Exception): | |
| def __init__(self, message: str): | |
| super().__init__(message) | |
| def parse_error(status_code: int, payload: Dict[str, str]) -> Exception: | |
| """ | |
| Parse error given an HTTP status code and a json payload | |
| Args: | |
| status_code (`int`): | |
| HTTP status code | |
| payload (`Dict[str, str]`): | |
| Json payload | |
| Returns: | |
| Exception: parsed exception | |
| """ | |
| # Try to parse a Text Generation Inference error | |
| message = payload["error"] | |
| if "error_type" in payload: | |
| error_type = payload["error_type"] | |
| if error_type == "generation": | |
| return GenerationError(message) | |
| if error_type == "incomplete_generation": | |
| return IncompleteGenerationError(message) | |
| if error_type == "overloaded": | |
| return OverloadedError(message) | |
| if error_type == "validation": | |
| return ValidationError(message) | |
| # Try to parse a APIInference error | |
| if status_code == 400: | |
| return BadRequestError(message) | |
| if status_code == 403 or status_code == 424: | |
| return ShardNotReadyError(message) | |
| if status_code == 504: | |
| return ShardTimeoutError(message) | |
| if status_code == 404: | |
| return NotFoundError(message) | |
| if status_code == 429: | |
| return RateLimitExceededError(message) | |
| # Fallback to an unknown error | |
| return UnknownError(message) | |