Skip to content

Référence pour hub_sdk/base/api_client.py

Note

Ce fichier est disponible Ă  l'adresse https://github.com/ultralytics/ hub-sdk/blob/main/ hub_sdk/base/api_client .py. Si tu repĂšres un problĂšme, aide Ă  le corriger en contribuant Ă  une Pull Request đŸ› ïž. Merci 🙏 !



hub_sdk.base.api_client.APIClientError

Bases : Exception

Classe d'exception personnalisée pour les erreurs du client de l'API.

Attributs :

Nom Type Description
message str

Un message d'erreur lisible par l'homme.

status_code int

Le code d'état HTTP associé à l'erreur, s'il est disponible.

Code source dans hub_sdk/base/api_client.py
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)

Initialise l'instance APIClientError.

ParamĂštres :

Nom Type Description DĂ©faut
message str

Un message d'erreur lisible par l'homme.

requis
status_code int

Le code d'état HTTP associé à l'erreur, s'il est disponible.

None
Code source dans 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

Représente un client API pour effectuer des demandes à une URL de base spécifiée.

Attributs :

Nom Type Description
base_url str

L'URL de base de l'API.

headers (dict, None)

En-tĂȘtes Ă  inclure dans chaque demande.

logger Logger

Une instance du logger Ă  des fins de journalisation.

Code source dans 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)

Initialise une instance de la classe APIClient.

ParamĂštres :

Nom Type Description DĂ©faut
base_url str

L'URL de base de l'API.

requis
headers dict

En-tĂȘtes Ă  inclure dans chaque demande.

None
Code source dans 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)

Fais une demande DELETE Ă  l'API.

ParamĂštres :

Nom Type Description DĂ©faut
endpoint str

Le point de terminaison Ă  ajouter Ă  l'URL de base de la demande.

requis
params dict

ParamĂštres Ă  inclure dans la demande.

None

Retourne :

Type Description
Optional[Response]

L'objet de rĂ©ponse de la requĂȘte HTTP DELETE, ou Aucun en cas d'Ă©chec.

Code source dans hub_sdk/base/api_client.py
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)

Fais une demande GET Ă  l'API.

ParamĂštres :

Nom Type Description DĂ©faut
endpoint str

Le point de terminaison Ă  ajouter Ă  l'URL de base de la demande.

requis
params dict

ParamĂštres de requĂȘte pour la demande.

None

Retourne :

Type Description
Optional[Response]

L'objet de la rĂ©ponse Ă  la requĂȘte HTTP GET, Aucun si elle Ă©choue.

Code source dans hub_sdk/base/api_client.py
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)

Fais une demande de PATCH Ă  l'API.

ParamĂštres :

Nom Type Description DĂ©faut
endpoint str

Le point de terminaison Ă  ajouter Ă  l'URL de base de la demande.

requis
data dict

DonnĂ©es Ă  envoyer dans le corps de la requĂȘte.

None
json dict

DonnĂ©es JSON Ă  envoyer dans le corps de la requĂȘte.

None

Retourne :

Type Description
Optional[Response]

L'objet de rĂ©ponse de la requĂȘte HTTP PATCH, ou Aucun si elle Ă©choue.

Code source dans hub_sdk/base/api_client.py
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)

Fais une demande POST Ă  l'API.

ParamĂštres :

Nom Type Description DĂ©faut
endpoint str

Le point de terminaison Ă  ajouter Ă  l'URL de base de la demande.

requis
data dict

DonnĂ©es Ă  envoyer dans le corps de la requĂȘte.

None
json dict

DonnĂ©es JSON Ă  envoyer dans le corps de la requĂȘte.

None
files dict

Fichiers à inclure dans la demande, le cas échéant.

None
stream bool

Si True, le contenu de la réponse sera diffusé en continu.

False

Retourne :

Type Description
Optional[Response]

L'objet de la rĂ©ponse Ă  la requĂȘte HTTP POST.

Code source dans hub_sdk/base/api_client.py
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)

Fais une demande PUT Ă  l'API.

ParamĂštres :

Nom Type Description DĂ©faut
endpoint str

Le point de terminaison Ă  ajouter Ă  l'URL de base de la demande.

requis
data Optional[Dict]

DonnĂ©es Ă  envoyer dans le corps de la requĂȘte.

None
json Optional[Dict]

DonnĂ©es JSON Ă  envoyer dans le corps de la requĂȘte

None

Retourne :

Type Description
Optional[Response]

L'objet de la rĂ©ponse Ă  la requĂȘte HTTP PUT.

Code source dans hub_sdk/base/api_client.py
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)