Saltar al contenido

Referencia para hub_sdk/helpers/error_handler.py

Nota

Este archivo est谩 disponible en https://github.com/ultralytics/hub-sdk/blob/main/hub_sdk/helpers/error_handler .py. Si detectas alg煤n problema, por favor, ayuda a solucionarlo contribuyendo con una Pull Request 馃洜锔. 隆Gracias 馃檹!



hub_sdk.helpers.error_handler.ErrorHandler

Representa un gestor de errores para gestionar los c贸digos de estado HTTP y los mensajes de error.

Atributos:

Nombre Tipo Descripci贸n
status_code int

El c贸digo de estado HTTP asociado al error.

message (str, None)

Un mensaje de error opcional que proporciona detalles adicionales. Por defecto es Ninguno.

headers (dict, None)

Un diccionario opcional que proporciona detalles de las cabeceras de respuesta. Por defecto es Ninguno.

C贸digo fuente en hub_sdk/helpers/error_handler.py
class ErrorHandler:
    """
    Represents an error handler for managing HTTP status codes and error messages.

    Attributes:
        status_code (int): The HTTP status code associated with the error.
        message (str, None): An optional error message providing additional details.
            Defaults to None.
        headers (dict, None): An optional dictionary providing response headers details.
            Defaults to None.
    """

    def __init__(
        self,
        status_code: int,
        message: Optional[str] = None,
        headers: Optional[dict] = None,
    ):
        """
        Initialize the ErrorHandler object with a given status code.

        Args:
            status_code (int): The HTTP status code representing the error.
            message (str, optional): An optional error message providing additional details.
            headers (dict, None): An optional dictionary providing response headers details.
        """
        self.status_code = status_code
        self.message = message
        self.headers = headers

    def handle(self) -> str:
        """
        Handle the error based on the provided status code.

        Returns:
            (str): A message describing the error.
        """
        error_handlers = {
            401: self.handle_unauthorized,
            404: self.handle_not_found,
            500: self.handle_internal_server_error,
            429: self.handle_ratelimit_exceeded,
        }

        handler = error_handlers.get(self.status_code, self.get_default_message)
        return handler()

    @staticmethod
    def handle_unauthorized() -> str:
        """
        Handle an unauthorized error (HTTP 401).

        Returns:
            (str): An error message indicating unauthorized access.
        """
        return "Unauthorized: Please check your credentials."

    def handle_ratelimit_exceeded(self) -> str:
        """
        Handle rate limit exceeded error (HTTP 429).

        Returns:
            (str): An error message indicating rate limit exceeded.
        """
        error_msg = "Rate Limits Exceeded: Please try again later."

        if "X-RateLimit-Reset" in self.headers:
            rate_reset = self.headers.get("X-RateLimit-Reset")

            try:
                reset_time = datetime.datetime.fromtimestamp(int(rate_reset)).strftime("%Y-%m-%d %H:%M:%S")
            except ValueError:
                reset_time = "unknown"

            error_msg = (
                "You have exceeded the rate limits for this request. "
                f"You will be able to make requests again after {reset_time}."
            )
        return error_msg

    @staticmethod
    def handle_not_found() -> str:
        """
        Handle a resource not found error (HTTP 404).

        Returns:
            (str): An error message indicating that the requested resource was not found.
        """
        return "Resource not found."

    @staticmethod
    def handle_internal_server_error() -> str:
        """
        Handle an internal server error (HTTP 500).

        Returns:
            (str): An error message indicating an internal server error.
        """
        return "Internal server error."

    @staticmethod
    def handle_unknown_error() -> str:
        """
        Handle an unknown error.

        Returns:
            (str): An error message indicating that an unknown error occurred.
        """
        return "Unknown error occurred."

    def get_default_message(self) -> str:
        """
        Get the default error message for a given HTTP status code.

        Returns:
            (str): The default error message associated with the provided status code.
                 If no message is found, it falls back to handling an unknown error.
        """
        return http.client.responses.get(self.status_code, self.handle_unknown_error())

__init__(status_code, message=None, headers=None)

Inicializa el objeto ErrorHandler con un c贸digo de estado dado.

Par谩metros:

Nombre Tipo Descripci贸n Por defecto
status_code int

El c贸digo de estado HTTP que representa el error.

necesario
message str

Un mensaje de error opcional que proporciona detalles adicionales.

None
headers (dict, None)

Un diccionario opcional que proporciona detalles de las cabeceras de respuesta.

None
C贸digo fuente en hub_sdk/helpers/error_handler.py
def __init__(
    self,
    status_code: int,
    message: Optional[str] = None,
    headers: Optional[dict] = None,
):
    """
    Initialize the ErrorHandler object with a given status code.

    Args:
        status_code (int): The HTTP status code representing the error.
        message (str, optional): An optional error message providing additional details.
        headers (dict, None): An optional dictionary providing response headers details.
    """
    self.status_code = status_code
    self.message = message
    self.headers = headers

get_default_message()

Obtener el mensaje de error predeterminado para un c贸digo de estado HTTP dado.

Devuelve:

Tipo Descripci贸n
str

El mensaje de error por defecto asociado al c贸digo de estado proporcionado. Si no se encuentra ning煤n mensaje, vuelve a tratar un error desconocido.

C贸digo fuente en hub_sdk/helpers/error_handler.py
def get_default_message(self) -> str:
    """
    Get the default error message for a given HTTP status code.

    Returns:
        (str): The default error message associated with the provided status code.
             If no message is found, it falls back to handling an unknown error.
    """
    return http.client.responses.get(self.status_code, self.handle_unknown_error())

handle()

Maneja el error en funci贸n del c贸digo de estado proporcionado.

Devuelve:

Tipo Descripci贸n
str

Un mensaje describiendo el error.

C贸digo fuente en hub_sdk/helpers/error_handler.py
def handle(self) -> str:
    """
    Handle the error based on the provided status code.

    Returns:
        (str): A message describing the error.
    """
    error_handlers = {
        401: self.handle_unauthorized,
        404: self.handle_not_found,
        500: self.handle_internal_server_error,
        429: self.handle_ratelimit_exceeded,
    }

    handler = error_handlers.get(self.status_code, self.get_default_message)
    return handler()

handle_internal_server_error() staticmethod

Gestionar un error interno del servidor (HTTP 500).

Devuelve:

Tipo Descripci贸n
str

Un mensaje de error que indica un error interno del servidor.

C贸digo fuente en hub_sdk/helpers/error_handler.py
@staticmethod
def handle_internal_server_error() -> str:
    """
    Handle an internal server error (HTTP 500).

    Returns:
        (str): An error message indicating an internal server error.
    """
    return "Internal server error."

handle_not_found() staticmethod

Gestiona un error de recurso no encontrado (HTTP 404).

Devuelve:

Tipo Descripci贸n
str

Un mensaje de error que indica que no se ha encontrado el recurso solicitado.

C贸digo fuente en hub_sdk/helpers/error_handler.py
@staticmethod
def handle_not_found() -> str:
    """
    Handle a resource not found error (HTTP 404).

    Returns:
        (str): An error message indicating that the requested resource was not found.
    """
    return "Resource not found."

handle_ratelimit_exceeded()

Manejar error de l铆mite de velocidad excedido (HTTP 429).

Devuelve:

Tipo Descripci贸n
str

Un mensaje de error que indica que se ha superado el l铆mite de velocidad.

C贸digo fuente en hub_sdk/helpers/error_handler.py
def handle_ratelimit_exceeded(self) -> str:
    """
    Handle rate limit exceeded error (HTTP 429).

    Returns:
        (str): An error message indicating rate limit exceeded.
    """
    error_msg = "Rate Limits Exceeded: Please try again later."

    if "X-RateLimit-Reset" in self.headers:
        rate_reset = self.headers.get("X-RateLimit-Reset")

        try:
            reset_time = datetime.datetime.fromtimestamp(int(rate_reset)).strftime("%Y-%m-%d %H:%M:%S")
        except ValueError:
            reset_time = "unknown"

        error_msg = (
            "You have exceeded the rate limits for this request. "
            f"You will be able to make requests again after {reset_time}."
        )
    return error_msg

handle_unauthorized() staticmethod

Gestionar un error no autorizado (HTTP 401).

Devuelve:

Tipo Descripci贸n
str

Un mensaje de error que indica un acceso no autorizado.

C贸digo fuente en hub_sdk/helpers/error_handler.py
@staticmethod
def handle_unauthorized() -> str:
    """
    Handle an unauthorized error (HTTP 401).

    Returns:
        (str): An error message indicating unauthorized access.
    """
    return "Unauthorized: Please check your credentials."

handle_unknown_error() staticmethod

Maneja un error desconocido.

Devuelve:

Tipo Descripci贸n
str

Un mensaje de error que indica que se ha producido un error desconocido.

C贸digo fuente en hub_sdk/helpers/error_handler.py
@staticmethod
def handle_unknown_error() -> str:
    """
    Handle an unknown error.

    Returns:
        (str): An error message indicating that an unknown error occurred.
    """
    return "Unknown error occurred."