Skip to content

Register now for

# 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: str | None = None, headers: dict | None = 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.
`headers` | `dict | None` | An optional dictionary providing response headers details.

Methods:

Name | Description
--- | ---
`handle` | Handle the error based on the provided status code.
`handle_unauthorized` | Handle an unauthorized error (HTTP 401).
`handle_ratelimit_exceeded` | Handle rate limit exceeded error (HTTP 429).
`handle_not_found` | Handle a resource not found error (HTTP 404).
`handle_internal_server_error` | Handle an internal server error (HTTP 500).
`handle_unknown_error` | Handle an unknown error.
`get_default_message` | Get the default error message for a given HTTP status code.

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` | An optional dictionary providing response headers details. | `None`

Source code in `hub_sdk/helpers/error_handler.py`

    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    def __init__(
        self,
        status_code: int,
        message: str | None = None,
        headers: dict | None = 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, optional): 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 or unknown error message if not found.

Source code in `hub_sdk/helpers/error_handler.py`

    126
    127
    128
    129
    130
    131
    132
    133
    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 or unknown error message if not found.
        """
        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`

    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    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`

    106
    107
    108
    109
    110
    111
    112
    113
    114
    @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`

     96
     97
     98
     99
    100
    101
    102
    103
    104
    @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 with reset time if available.

Source code in `hub_sdk/helpers/error_handler.py`

    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    def handle_ratelimit_exceeded(self) -> str:
        """
        Handle rate limit exceeded error (HTTP 429).

        Returns:
            (str): An error message indicating rate limit exceeded with reset time if available.
        """
        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`

    63
    64
    65
    66
    67
    68
    69
    70
    71
    @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`

    116
    117
    118
    119
    120
    121
    122
    123
    124
    @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."

📅 Created 1 year ago ✏️ Updated 1 month ago