انتقل إلى المحتوى

مرجع ل hub_sdk/helpers/error_handler.py

ملاحظه

هذا الملف متاح في https://github.com/ultralytics/hub-sdk/blob/main/hub_sdk/helpers/error_handler.py. إذا اكتشفت مشكلة ، فيرجى المساعدة في إصلاحها من خلال المساهمة في طلب 🛠️ سحب. شكرا لك 🙏!



hub_sdk.helpers.error_handler.ErrorHandler

يمثل معالج أخطاء لإدارة رموز حالة HTTP ورسائل الخطأ.

سمات:

اسم نوع وصف
status_code int

رمز حالة HTTP المقترن بالخطأ.

message (str, None)

رسالة خطأ اختيارية توفر تفاصيل إضافية. الإعدادات الافتراضية إلى لا شيء.

headers (dict, None)

قاموس اختياري يوفر تفاصيل رؤوس الاستجابة. افتراضي إلى لا شيء.

شفرة المصدر في 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)

تهيئة كائن ErrorHandler برمز حالة معين.

البارامترات:

اسم نوع وصف افتراضي
status_code int

رمز حالة HTTP الذي يمثل الخطأ.

مطلوب
message str

رسالة خطأ اختيارية توفر تفاصيل إضافية.

None
headers (dict, None)

قاموس اختياري يوفر تفاصيل رؤوس الاستجابة.

None
شفرة المصدر في 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()

احصل على رسالة الخطأ الافتراضية لرمز حالة HTTP معين.

ارجاع:

نوع وصف
str

رسالة الخطأ الافتراضية المقترنة برمز الحالة المقدم. إذا لم يتم العثور على رسالة ، فإنها تعود إلى معالجة خطأ غير معروف.

شفرة المصدر في 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()

تعامل مع الخطأ بناء على رمز الحالة المقدم.

ارجاع:

نوع وصف
str

رسالة تصف الخطأ.

شفرة المصدر في 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

معالجة خطأ خادم داخلي (HTTP 500).

ارجاع:

نوع وصف
str

رسالة خطأ تشير إلى خطأ داخلي في الخادم.

شفرة المصدر في 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

معالجة خطأ لم يتم العثور على مورد (HTTP 404).

ارجاع:

نوع وصف
str

رسالة خطأ تشير إلى أنه لم يتم العثور على المورد المطلوب.

شفرة المصدر في 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()

تجاوز حد معدل المعالجة الخطأ (HTTP 429).

ارجاع:

نوع وصف
str

رسالة خطأ تشير إلى تجاوز حد المعدل.

شفرة المصدر في 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

معالجة خطأ غير مصرح به (HTTP 401).

ارجاع:

نوع وصف
str

رسالة خطأ تشير إلى الوصول غير المصرح به.

شفرة المصدر في 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

تعامل مع خطأ غير معروف.

ارجاع:

نوع وصف
str

رسالة خطأ تشير إلى حدوث خطأ غير معروف.

شفرة المصدر في 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."