Skip to content

Reference for hub_sdk/helpers/error_handler.py

Note

This file is available at https://github.com/ultralytics/hub-sdk/blob/main/hub_sdk/helpers/error_handler.py. If you spot a problem please help fix it by contributing a Pull Request 🛠️. Thank you 🙏!


hub_sdk.helpers.error_handler.ErrorHandler

ErrorHandler(status_code: int, message: Optional[str] = None, headers: Optional[dict] = None)

Represents an error handler for managing HTTP status codes and error messages.

Attributes:

Name Type Description
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.

Parameters:

Name Type Description Default
status_code int

The HTTP status code representing the error.

required
message str

An optional error message providing additional details.

None
headers (dict, None)

An optional dictionary providing response headers details.

None
Source code in 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

get_default_message() -> str

Get the default error message for a given HTTP status code.

Returns:

Type Description
str

The default error message associated with the provided status code. If no message is found, it falls back to handling an unknown error.

Source code in 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

handle() -> str

Handle the error based on the provided status code.

Returns:

Type Description
str

A message describing the error.

Source code in 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

handle_internal_server_error() -> str

Handle an internal server error (HTTP 500).

Returns:

Type Description
str

An error message indicating an internal server error.

Source code in 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

handle_not_found() -> str

Handle a resource not found error (HTTP 404).

Returns:

Type Description
str

An error message indicating that the requested resource was not found.

Source code in 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

handle_ratelimit_exceeded() -> str

Handle rate limit exceeded error (HTTP 429).

Returns:

Type Description
str

An error message indicating rate limit exceeded.

Source code in 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

handle_unauthorized() -> str

Handle an unauthorized error (HTTP 401).

Returns:

Type Description
str

An error message indicating unauthorized access.

Source code in 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

handle_unknown_error() -> str

Handle an unknown error.

Returns:

Type Description
str

An error message indicating that an unknown error occurred.

Source code in 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."