सामग्री पर जाएं

के लिए संदर्भ hub_sdk/base/api_client.py

नोट

यह फ़ाइल यहाँ उपलब्ध है https://github.com/ultralytics/hub-एसडीके/बूँद/मुख्य/hub_sdk/आधार/api_client.py। यदि आप कोई समस्या देखते हैं तो कृपया पुल अनुरोध का योगदान करके इसे ठीक करने में मदद करें 🛠️। 🙏 धन्यवाद !



hub_sdk.base.api_client.APIClientError

का रूप: Exception

एपीआई क्लाइंट त्रुटियों के लिए कस्टम अपवाद वर्ग।

विशेषताएँ:

नाम प्रकार विवरण: __________
message str

एक मानव-पठनीय त्रुटि संदेश।

status_code int

HTTP स्थिति कोड त्रुटि के साथ संबद्ध, यदि उपलब्ध हो।

में स्रोत कोड hub_sdk/base/api_client.py
11 12 13 14 15 16 17 18 19 20 21 22 23 2425262728293031 3233
class APIClientError(Exception):
    """
    Custom exception class for API client errors.

    Attributes:
        message (str): A human-readable error message.
        status_code (int): The HTTP status code associated with the error, if available.
    """

    def __init__(self, message: str, status_code: Optional[int] = None):
        """
        Initialize the APIClientError instance.

        Args:
            message (str): A human-readable error message.
            status_code (int, optional): The HTTP status code associated with the error, if available.
        """
        super().__init__(message)
        self.status_code = status_code
        self.message = message

    def __str__(self) -> str:
        return f"{self.__class__.__name__}: {self.args[0]}"

__init__(message, status_code=None)

APIClientError आवृत्ति प्रारंभ करें।

पैरामीटर:

नाम प्रकार विवरण: __________ चूक
message str

एक मानव-पठनीय त्रुटि संदेश।

आवश्यक
status_code int

HTTP स्थिति कोड त्रुटि के साथ संबद्ध, यदि उपलब्ध हो।

None
में स्रोत कोड hub_sdk/base/api_client.py
def __init__(self, message: str, status_code: Optional[int] = None):
    """
    Initialize the APIClientError instance.

    Args:
        message (str): A human-readable error message.
        status_code (int, optional): The HTTP status code associated with the error, if available.
    """
    super().__init__(message)
    self.status_code = status_code
    self.message = message



hub_sdk.base.api_client.APIClient

निर्दिष्ट आधार URL के लिए अनुरोध करने के लिए एक API क्लाइंट का प्रतिनिधित्व करता है।

विशेषताएँ:

नाम प्रकार विवरण: __________
base_url str

API के लिए आधार URL.

headers (dict, None)

प्रत्येक अनुरोध में हेडर शामिल किए जाने चाहिए।

logger Logger

लॉगिंग उद्देश्यों के लिए लकड़हारे का एक उदाहरण।

में स्रोत कोड hub_sdk/base/api_client.py
class APIClient:
    """
    Represents an API client for making requests to a specified base URL.

    Attributes:
        base_url (str): The base URL for the API.
        headers (dict, None): Headers to be included in each request.
        logger (logging.Logger): An instance of the logger for logging purposes.
    """

    def __init__(self, base_url: str, headers: Optional[Dict] = None):
        """
        Initialize an instance of the APIClient class.

        Args:
            base_url (str): The base URL for the API.
            headers (dict, optional): Headers to be included in each request.
        """
        self.base_url = base_url
        self.headers = headers
        self.logger = logger

    def _make_request(
        self,
        method: str,
        endpoint: str,
        data: Optional[Dict] = None,
        json: Optional[Dict] = None,
        params: Optional[Dict] = None,
        files: Optional[Dict] = None,
        stream: bool = False,
    ) -> Optional[requests.Response]:
        """
        Make an HTTP request to the API.

        Args:
            method (str): The HTTP method to use for the request (e.g., "GET", "POST").
            endpoint (str): The endpoint to append to the base URL for the request.
            data (dict, optional): Data to be sent in the request's body.
            json (dict, optional): JSON data to be sent in the request's body.
            params (dict, optional): Query parameters for the request.
            files (dict, optional): Files to be sent as part of the form data.
            stream (bool, optional): Whether to stream the response content.

        Returns:
            (Optional[requests.Response]): The response object from the HTTP request, None if it fails and
        HUB_EXCEPTIONS off.

        Raises:
            (APIClientError): If an error occurs during the request, this exception is raised with an appropriate
        message based on the HTTP status code.
        """
        # Overwrite the base url if a http url is submitted
        url = endpoint if endpoint.startswith("http") else self.base_url + endpoint

        kwargs = {"params": params, "files": files, "headers": self.headers, "stream": stream}

        # Determine the request data based on 'data' or 'json_data'
        if json is not None:
            kwargs["json"] = json
        else:
            kwargs["data"] = data

        try:
            response = requests.request(method, url, **kwargs)

            response.raise_for_status()
            return response
        except requests.exceptions.RequestException as e:
            status_code = None
            # To handle Timeout and ConnectionError exceptions
            if hasattr(e, "response") and e.response:
                status_code = e.response.status_code

            error_msg = ErrorHandler(status_code).handle()
            self.logger.error(error_msg)

            if not HUB_EXCEPTIONS:
                raise APIClientError(error_msg, status_code=status_code) from e

    def get(self, endpoint: str, params=None) -> Optional[requests.Response]:
        """
        Make a GET request to the API.

        Args:
            endpoint (str): The endpoint to append to the base URL for the request.
            params (dict, optional): Query parameters for the request.

        Returns:
            (Optional[requests.Response]): The response object from the HTTP GET request, None if it fails.
        """
        return self._make_request("GET", endpoint, params=params)

    def post(
        self,
        endpoint: str,
        data: Optional[Dict] = None,
        json: Optional[Dict] = None,
        files: Optional[Dict] = None,
        stream=False,
    ) -> Optional[requests.Response]:
        """
        Make a POST request to the API.

        Args:
            endpoint (str): The endpoint to append to the base URL for the request.
            data (dict, optional): Data to be sent in the request's body.
            json (dict, optional): JSON data to be sent in the request's body.
            files (dict, optional): Files to be included in the request, if any.
            stream (bool, optional): If True, the response content will be streamed.

        Returns:
            (Optional[requests.Response]): The response object from the HTTP POST request.
        """
        return self._make_request("POST", endpoint, data=data, json=json, files=files, stream=stream)

    def put(
        self, endpoint: str, data: Optional[Dict] = None, json: Optional[Dict] = None
    ) -> Optional[requests.Response]:
        """
        Make a PUT request to the API.

        Args:
            endpoint (str): The endpoint to append to the base URL for the request.
            data (Optional[Dict], optional): Data to be sent in the request's body.
            json (Optional[Dict], optional): JSON data to be sent in the request's body

        Returns:
            (Optional[requests.Response]): The response object from the HTTP PUT request.
        """
        return self._make_request("PUT", endpoint, data=data, json=json)

    def delete(self, endpoint: str, params: Optional[Dict] = None) -> Optional[requests.Response]:
        """
        Make a DELETE request to the API.

        Args:
            endpoint (str): The endpoint to append to the base URL for the request.
            params (dict, optional): Parameters to include in the request.

        Returns:
            (Optional[requests.Response]): The response object from the HTTP DELETE request, or None if it fails.
        """
        return self._make_request("DELETE", endpoint, params=params)

    def patch(
        self, endpoint: str, data: Optional[Dict] = None, json: Optional[Dict] = None
    ) -> Optional[requests.Response]:
        """
        Make a PATCH request to the API.

        Args:
            endpoint (str): The endpoint to append to the base URL for the request.
            data (dict, optional): Data to be sent in the request's body.
            json (dict, optional): JSON data to be sent in the request's body.

        Returns:
            (Optional[requests.Response]): The response object from the HTTP PATCH request, or None if it fails.
        """
        return self._make_request("PATCH", endpoint, data=data, json=json)

__init__(base_url, headers=None)

APIClient क्लास का एक उदाहरण प्रारंभ करें।

पैरामीटर:

नाम प्रकार विवरण: __________ चूक
base_url str

API के लिए आधार URL.

आवश्यक
headers dict

प्रत्येक अनुरोध में हेडर शामिल किए जाने चाहिए।

None
में स्रोत कोड hub_sdk/base/api_client.py
def __init__(self, base_url: str, headers: Optional[Dict] = None):
    """
    Initialize an instance of the APIClient class.

    Args:
        base_url (str): The base URL for the API.
        headers (dict, optional): Headers to be included in each request.
    """
    self.base_url = base_url
    self.headers = headers
    self.logger = logger

delete(endpoint, params=None)

API को DELETE अनुरोध करें।

पैरामीटर:

नाम प्रकार विवरण: __________ चूक
endpoint str

अनुरोध के लिए आधार URL में जोड़ने के लिए समापन बिंदु।

आवश्यक
params dict

अनुरोध में शामिल करने के लिए पैरामीटर।

None

देता:

प्रकार विवरण: __________
Optional[Response]

HTTP DELETE अनुरोध से प्रतिसाद ऑब्जेक्ट, या कोई नहीं यदि वह विफल रहता है।

में स्रोत कोड hub_sdk/base/api_client.py
168 169 170 171 172 173 174 175 176 177 178179
def delete(self, endpoint: str, params: Optional[Dict] = None) -> Optional[requests.Response]:
    """
    Make a DELETE request to the API.

    Args:
        endpoint (str): The endpoint to append to the base URL for the request.
        params (dict, optional): Parameters to include in the request.

    Returns:
        (Optional[requests.Response]): The response object from the HTTP DELETE request, or None if it fails.
    """
    return self._make_request("DELETE", endpoint, params=params)

get(endpoint, params=None)

एपीआई के लिए एक जीईटी अनुरोध करें।

पैरामीटर:

नाम प्रकार विवरण: __________ चूक
endpoint str

अनुरोध के लिए आधार URL में जोड़ने के लिए समापन बिंदु।

आवश्यक
params dict

अनुरोध के लिए क्वेरी पैरामीटर.

None

देता:

प्रकार विवरण: __________
Optional[Response]

HTTP GET अनुरोध से प्रतिसाद ऑब्जेक्ट, कोई नहीं यदि वह विफल रहता है।

में स्रोत कोड hub_sdk/base/api_client.py
116 117 118 119 120 121 122 123 124 125 126127
def get(self, endpoint: str, params=None) -> Optional[requests.Response]:
    """
    Make a GET request to the API.

    Args:
        endpoint (str): The endpoint to append to the base URL for the request.
        params (dict, optional): Query parameters for the request.

    Returns:
        (Optional[requests.Response]): The response object from the HTTP GET request, None if it fails.
    """
    return self._make_request("GET", endpoint, params=params)

patch(endpoint, data=None, json=None)

एपीआई के लिए एक पैच अनुरोध करें।

पैरामीटर:

नाम प्रकार विवरण: __________ चूक
endpoint str

अनुरोध के लिए आधार URL में जोड़ने के लिए समापन बिंदु।

आवश्यक
data dict

अनुरोध के मुख्य भाग में भेजा जाने वाला डेटा.

None
json dict

JSON डेटा अनुरोध के मुख्य भाग में भेजा जाना है।

None

देता:

प्रकार विवरण: __________
Optional[Response]

HTTP PATCH अनुरोध से प्रतिसाद ऑब्जेक्ट, या कोई नहीं यदि वह विफल रहता है।

में स्रोत कोड hub_sdk/base/api_client.py
181 182 183 184 185 186 187 188 189 190 191 192 193194195
def patch(
    self, endpoint: str, data: Optional[Dict] = None, json: Optional[Dict] = None
) -> Optional[requests.Response]:
    """
    Make a PATCH request to the API.

    Args:
        endpoint (str): The endpoint to append to the base URL for the request.
        data (dict, optional): Data to be sent in the request's body.
        json (dict, optional): JSON data to be sent in the request's body.

    Returns:
        (Optional[requests.Response]): The response object from the HTTP PATCH request, or None if it fails.
    """
    return self._make_request("PATCH", endpoint, data=data, json=json)

post(endpoint, data=None, json=None, files=None, stream=False)

API के लिए POST अनुरोध करें।

पैरामीटर:

नाम प्रकार विवरण: __________ चूक
endpoint str

अनुरोध के लिए आधार URL में जोड़ने के लिए समापन बिंदु।

आवश्यक
data dict

अनुरोध के मुख्य भाग में भेजा जाने वाला डेटा.

None
json dict

JSON डेटा अनुरोध के मुख्य भाग में भेजा जाना है।

None
files dict

अनुरोध में शामिल की जाने वाली फ़ाइलें, यदि कोई हो।

None
stream bool

अगर सही है, तो जवाब की सामग्री स्ट्रीम की जाएगी.

False

देता:

प्रकार विवरण: __________
Optional[Response]

HTTP POST अनुरोध से प्रतिसाद ऑब्जेक्ट।

में स्रोत कोड hub_sdk/base/api_client.py
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148149 150
def post(
    self,
    endpoint: str,
    data: Optional[Dict] = None,
    json: Optional[Dict] = None,
    files: Optional[Dict] = None,
    stream=False,
) -> Optional[requests.Response]:
    """
    Make a POST request to the API.

    Args:
        endpoint (str): The endpoint to append to the base URL for the request.
        data (dict, optional): Data to be sent in the request's body.
        json (dict, optional): JSON data to be sent in the request's body.
        files (dict, optional): Files to be included in the request, if any.
        stream (bool, optional): If True, the response content will be streamed.

    Returns:
        (Optional[requests.Response]): The response object from the HTTP POST request.
    """
    return self._make_request("POST", endpoint, data=data, json=json, files=files, stream=stream)

put(endpoint, data=None, json=None)

एपीआई के लिए एक पुट अनुरोध करें।

पैरामीटर:

नाम प्रकार विवरण: __________ चूक
endpoint str

अनुरोध के लिए आधार URL में जोड़ने के लिए समापन बिंदु।

आवश्यक
data Optional[Dict]

अनुरोध के मुख्य भाग में भेजा जाने वाला डेटा.

None
json Optional[Dict]

अनुरोध के मुख्य भाग में भेजा जाने वाला JSON डेटा

None

देता:

प्रकार विवरण: __________
Optional[Response]

HTTP PUT अनुरोध से प्रतिसाद ऑब्जेक्ट।

में स्रोत कोड hub_sdk/base/api_client.py
152 153 154 155 156 157 158 159 160 161 162 163 164165166
def put(
    self, endpoint: str, data: Optional[Dict] = None, json: Optional[Dict] = None
) -> Optional[requests.Response]:
    """
    Make a PUT request to the API.

    Args:
        endpoint (str): The endpoint to append to the base URL for the request.
        data (Optional[Dict], optional): Data to be sent in the request's body.
        json (Optional[Dict], optional): JSON data to be sent in the request's body

    Returns:
        (Optional[requests.Response]): The response object from the HTTP PUT request.
    """
    return self._make_request("PUT", endpoint, data=data, json=json)