Skip to content

Référence pour hub_sdk/modules/datasets.py

Note

Ce fichier est disponible à l'adresse https://github.com/ultralytics/hub-sdk/blob/main/hub_sdk/modules/datasets .py. Si tu repères un problème, aide à le corriger en contribuant à une Pull Request 🛠️. Merci 🙏 !



hub_sdk.modules.datasets.Datasets

Bases : CRUDClient

Une classe représentant un client qui interagit avec les ensembles de données par le biais d'opérations CRUD. Cette classe étend la classe CRUDClient et fournit des méthodes spécifiques pour travailler avec les jeux de données.

Attributs :

Nom Type Description
hub_client DatasetUpload

Une instance de DatasetUpload utilisée pour interagir avec les téléchargements de modèles.

id (str, None)

L'identifiant unique de l'ensemble de données, s'il est disponible.

data dict

Un dictionnaire pour stocker les données de l'ensemble de données.

Note

L'attribut 'id' est défini lors de l'initialisation et peut être utilisé pour identifier de façon unique un jeu de données. L'attribut 'data' est utilisé pour stocker les données de l'ensemble de données extraites de l'API.

Code source dans hub_sdk/modules/datasets.py
class Datasets(CRUDClient):
    """
    A class representing a client for interacting with Datasets through CRUD operations. This class extends the
    CRUDClient class and provides specific methods for working with Datasets.

    Attributes:
        hub_client (DatasetUpload): An instance of DatasetUpload used for interacting with model uploads.
        id (str, None): The unique identifier of the dataset, if available.
        data (dict): A dictionary to store dataset data.

    Note:
        The 'id' attribute is set during initialization and can be used to uniquely identify a dataset.
        The 'data' attribute is used to store dataset data fetched from the API.
    """

    def __init__(self, dataset_id: Optional[str] = None, headers: Optional[Dict[str, Any]] = None):
        """
        Initialize a Datasets client.

        Args:
            dataset_id (str): Unique id of the dataset.
            headers (dict, optional): Headers to include in HTTP requests.
        """
        super().__init__("datasets", "dataset", headers)
        self.hub_client = DatasetUpload(headers)
        self.id = dataset_id
        self.data = {}
        if dataset_id:
            self.get_data()

    def get_data(self) -> None:
        """
        Retrieves data for the current dataset instance.

        If a valid dataset ID has been set, it sends a request to fetch the dataset data and stores it in the instance.
        If no dataset ID has been set, it logs an error message.

        Returns:
            (None): The method does not return a value.
        """
        if not self.id:
            self.logger.error("No dataset id has been set. Update the dataset id or create a dataset.")
            return

        try:
            response = super().read(self.id)

            if response is None:
                self.logger.error(f"Received no response from the server for dataset ID: {self.id}")
                return

            # Check if the response has a .json() method (it should if it's a response object)
            if not hasattr(response, "json"):
                self.logger.error(f"Invalid response object received for dataset ID: {self.id}")
                return

            resp_data = response.json()
            if resp_data is None:
                self.logger.error(f"No data received in the response for dataset ID: {self.id}")
                return

            self.data = resp_data.get("data", {})
            self.logger.debug(f"Dataset data retrieved for ID: {self.id}")

        except Exception as e:
            self.logger.error(f"An error occurred while retrieving data for dataset ID: {self.id}, {e}")

    def create_dataset(self, dataset_data: dict) -> None:
        """
        Creates a new dataset with the provided data and sets the dataset ID for the current instance.

        Args:
            dataset_data (dict): A dictionary containing the data for creating the dataset.

        Returns:
            (None): The method does not return a value.
        """
        resp = super().create(dataset_data).json()
        self.id = resp.get("data", {}).get("id")
        self.get_data()

    def delete(self, hard: bool = False) -> Optional[Response]:
        """
        Delete the dataset resource represented by this instance.

        Args:
            hard (bool, optional): If True, perform a hard delete.

        Note:
            The 'hard' parameter determines whether to perform a soft delete (default) or a hard delete.
            In a soft delete, the dataset might be marked as deleted but retained in the system.
            In a hard delete, the dataset is permanently removed from the system.

        Returns:
            (Optional[Response]): Response object from the delete request, or None if delete fails.
        """
        return super().delete(self.id, hard)

    def update(self, data: dict) -> Optional[Response]:
        """
        Update the dataset resource represented by this instance.

        Args:
            data (dict): The updated data for the dataset resource.

        Returns:
            (Optional[Response]): Response object from the update request, or None if update fails.
        """
        return super().update(self.id, data)

    def upload_dataset(self, file: str = None) -> Optional[Response]:
        """
        Uploads a dataset file to the hub.

        Args:
            file (str, optional): The path to the dataset file to upload.

        Returns:
            (Optional[Response]): Response object from the upload request, or None if upload fails.
        """
        return self.hub_client.upload_dataset(self.id, file)

    def get_download_link(self) -> Optional[str]:
        """
        Get dataset download link.

        Returns:
            (Optional[str]): Return download link or None if the link is not available.
        """
        return self.data.get("url")

__init__(dataset_id=None, headers=None)

Initialise un client Datasets.

Paramètres :

Nom Type Description DĂ©faut
dataset_id str

Identifiant unique de l'ensemble de données.

None
headers dict

En-tĂŞtes Ă  inclure dans les requĂŞtes HTTP.

None
Code source dans hub_sdk/modules/datasets.py
def __init__(self, dataset_id: Optional[str] = None, headers: Optional[Dict[str, Any]] = None):
    """
    Initialize a Datasets client.

    Args:
        dataset_id (str): Unique id of the dataset.
        headers (dict, optional): Headers to include in HTTP requests.
    """
    super().__init__("datasets", "dataset", headers)
    self.hub_client = DatasetUpload(headers)
    self.id = dataset_id
    self.data = {}
    if dataset_id:
        self.get_data()

create_dataset(dataset_data)

Crée un nouveau jeu de données avec les données fournies et définit l'ID du jeu de données pour l'instance actuelle.

Paramètres :

Nom Type Description DĂ©faut
dataset_data dict

Un dictionnaire contenant les données nécessaires à la création de l'ensemble de données.

requis

Retourne :

Type Description
None

La méthode ne renvoie pas de valeur.

Code source dans hub_sdk/modules/datasets.py
def create_dataset(self, dataset_data: dict) -> None:
    """
    Creates a new dataset with the provided data and sets the dataset ID for the current instance.

    Args:
        dataset_data (dict): A dictionary containing the data for creating the dataset.

    Returns:
        (None): The method does not return a value.
    """
    resp = super().create(dataset_data).json()
    self.id = resp.get("data", {}).get("id")
    self.get_data()

delete(hard=False)

Supprime la ressource de jeu de données représentée par cette instance.

Paramètres :

Nom Type Description DĂ©faut
hard bool

Si c'est le cas, effectue un effacement définitif.

False
Note

Le paramètre 'hard' détermine s'il faut effectuer une suppression douce (par défaut) ou une suppression dure. Dans le cas d'une suppression douce, l'ensemble de données peut être marqué comme supprimé mais conservé dans le système. Dans le cas d'une suppression dure, l'ensemble de données est définitivement supprimé du système.

Retourne :

Type Description
Optional[Response]

Objet de réponse de la demande de suppression, ou Aucun si la suppression échoue.

Code source dans hub_sdk/modules/datasets.py
def delete(self, hard: bool = False) -> Optional[Response]:
    """
    Delete the dataset resource represented by this instance.

    Args:
        hard (bool, optional): If True, perform a hard delete.

    Note:
        The 'hard' parameter determines whether to perform a soft delete (default) or a hard delete.
        In a soft delete, the dataset might be marked as deleted but retained in the system.
        In a hard delete, the dataset is permanently removed from the system.

    Returns:
        (Optional[Response]): Response object from the delete request, or None if delete fails.
    """
    return super().delete(self.id, hard)

get_data()

Récupère les données de l'instance de jeu de données actuelle.

Si un ID de jeu de données valide a été défini, il envoie une requête pour récupérer les données du jeu de données et les stocke dans l'instance. Si aucun identifiant de jeu de données n'a été défini, un message d'erreur est affiché.

Retourne :

Type Description
None

La méthode ne renvoie pas de valeur.

Code source dans hub_sdk/modules/datasets.py
def get_data(self) -> None:
    """
    Retrieves data for the current dataset instance.

    If a valid dataset ID has been set, it sends a request to fetch the dataset data and stores it in the instance.
    If no dataset ID has been set, it logs an error message.

    Returns:
        (None): The method does not return a value.
    """
    if not self.id:
        self.logger.error("No dataset id has been set. Update the dataset id or create a dataset.")
        return

    try:
        response = super().read(self.id)

        if response is None:
            self.logger.error(f"Received no response from the server for dataset ID: {self.id}")
            return

        # Check if the response has a .json() method (it should if it's a response object)
        if not hasattr(response, "json"):
            self.logger.error(f"Invalid response object received for dataset ID: {self.id}")
            return

        resp_data = response.json()
        if resp_data is None:
            self.logger.error(f"No data received in the response for dataset ID: {self.id}")
            return

        self.data = resp_data.get("data", {})
        self.logger.debug(f"Dataset data retrieved for ID: {self.id}")

    except Exception as e:
        self.logger.error(f"An error occurred while retrieving data for dataset ID: {self.id}, {e}")

Obtiens le lien de téléchargement du jeu de données.

Retourne :

Type Description
Optional[str]

Renvoie le lien de téléchargement ou Aucun si le lien n'est pas disponible.

Code source dans hub_sdk/modules/datasets.py
def get_download_link(self) -> Optional[str]:
    """
    Get dataset download link.

    Returns:
        (Optional[str]): Return download link or None if the link is not available.
    """
    return self.data.get("url")

update(data)

Met à jour la ressource de jeu de données représentée par cette instance.

Paramètres :

Nom Type Description DĂ©faut
data dict

Les données mises à jour pour la ressource du jeu de données.

requis

Retourne :

Type Description
Optional[Response]

Objet de réponse de la demande de mise à jour, ou Aucun si la mise à jour échoue.

Code source dans hub_sdk/modules/datasets.py
def update(self, data: dict) -> Optional[Response]:
    """
    Update the dataset resource represented by this instance.

    Args:
        data (dict): The updated data for the dataset resource.

    Returns:
        (Optional[Response]): Response object from the update request, or None if update fails.
    """
    return super().update(self.id, data)

upload_dataset(file=None)

Télécharge un fichier de données sur le concentrateur.

Paramètres :

Nom Type Description DĂ©faut
file str

Le chemin d'accès au fichier de données à télécharger.

None

Retourne :

Type Description
Optional[Response]

Objet de réponse de la demande de téléchargement, ou Aucun si le téléchargement échoue.

Code source dans hub_sdk/modules/datasets.py
def upload_dataset(self, file: str = None) -> Optional[Response]:
    """
    Uploads a dataset file to the hub.

    Args:
        file (str, optional): The path to the dataset file to upload.

    Returns:
        (Optional[Response]): Response object from the upload request, or None if upload fails.
    """
    return self.hub_client.upload_dataset(self.id, file)



hub_sdk.modules.datasets.DatasetList

Bases : PaginatedList

Code source dans hub_sdk/modules/datasets.py
class DatasetList(PaginatedList):
    def __init__(self, page_size=None, public=None, headers=None):
        """
        Initialize a Dataset instance.

        Args:
            page_size (int, optional): The number of items to request per page.
            public (bool, optional): Whether the items should be publicly accessible.
            headers (dict, optional): Headers to be included in API requests.
        """
        base_endpoint = "datasets"
        super().__init__(base_endpoint, "dataset", page_size, public, headers)

__init__(page_size=None, public=None, headers=None)

Initialise une instance de jeu de données.

Paramètres :

Nom Type Description DĂ©faut
page_size int

Le nombre d'éléments à demander par page.

None
public bool

Si les articles doivent ĂŞtre accessibles au public.

None
headers dict

En-tĂŞtes Ă  inclure dans les demandes d'API.

None
Code source dans hub_sdk/modules/datasets.py
def __init__(self, page_size=None, public=None, headers=None):
    """
    Initialize a Dataset instance.

    Args:
        page_size (int, optional): The number of items to request per page.
        public (bool, optional): Whether the items should be publicly accessible.
        headers (dict, optional): Headers to be included in API requests.
    """
    base_endpoint = "datasets"
    super().__init__(base_endpoint, "dataset", page_size, public, headers)