Saltar al contenido

Referencia para hub_sdk/modules/datasets.py

Nota

Este archivo est谩 disponible en https://github.com/ultralytics/hub-sdk/blob/main/hub_sdk/modules/datasets .py. Si detectas alg煤n problema, por favor, ayuda a solucionarlo contribuyendo con una Pull Request 馃洜锔. 隆Gracias 馃檹!



hub_sdk.modules.datasets.Datasets

Bases: CRUDClient

Una clase que representa a un cliente para interactuar con Conjuntos de datos mediante operaciones CRUD. Esta clase ampl铆a la clase CRUDClient y proporciona m茅todos espec铆ficos para trabajar con Conjuntos de datos.

Atributos:

Nombre Tipo Descripci贸n
hub_client DatasetUpload

Una instancia de DatasetUpload utilizada para interactuar con las cargas de modelos.

id (str, None)

El identificador 煤nico del conjunto de datos, si est谩 disponible.

data dict

Un diccionario para almacenar los datos del conjunto de datos.

Nota

El atributo "id" se establece durante la inicializaci贸n y puede utilizarse para identificar de forma 煤nica un conjunto de datos. El atributo "datos" se utiliza para almacenar los datos del conjunto de datos obtenidos de la API.

C贸digo fuente en 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)

Inicializa un cliente de Conjuntos de datos.

Par谩metros:

Nombre Tipo Descripci贸n Por defecto
dataset_id str

Id. 煤nico del conjunto de datos.

None
headers dict

Cabeceras a incluir en las peticiones HTTP.

None
C贸digo fuente en 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)

Crea un nuevo conjunto de datos con los datos proporcionados y establece el ID del conjunto de datos para la instancia actual.

Par谩metros:

Nombre Tipo Descripci贸n Por defecto
dataset_data dict

Un diccionario que contiene los datos para crear el conjunto de datos.

necesario

Devuelve:

Tipo Descripci贸n
None

El m茅todo no devuelve ning煤n valor.

C贸digo fuente en 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)

Elimina el recurso conjunto de datos representado por esta instancia.

Par谩metros:

Nombre Tipo Descripci贸n Por defecto
hard bool

Si es Verdadero, realiza un borrado fuerte.

False
Nota

El par谩metro "duro" determina si se realiza un borrado suave (por defecto) o un borrado duro. En un borrado suave, el conjunto de datos puede marcarse como borrado pero conservarse en el sistema. En un borrado fuerte, el conjunto de datos se elimina permanentemente del sistema.

Devuelve:

Tipo Descripci贸n
Optional[Response]

Objeto de respuesta de la petici贸n de borrado, o Ninguno si el borrado falla.

C贸digo fuente en 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()

Recupera los datos del conjunto de datos actual.

Si se ha establecido un ID de conjunto de datos v谩lido, env铆a una petici贸n para obtener los datos del conjunto de datos y los almacena en la instancia. Si no se ha establecido ning煤n ID de conjunto de datos, registra un mensaje de error.

Devuelve:

Tipo Descripci贸n
None

El m茅todo no devuelve ning煤n valor.

C贸digo fuente en 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}")

Obt茅n el enlace de descarga del conjunto de datos.

Devuelve:

Tipo Descripci贸n
Optional[str]

Devuelve el enlace de descarga o Ninguno si el enlace no est谩 disponible.

C贸digo fuente en 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)

Actualiza el recurso conjunto de datos representado por esta instancia.

Par谩metros:

Nombre Tipo Descripci贸n Por defecto
data dict

Los datos actualizados del recurso conjunto de datos.

necesario

Devuelve:

Tipo Descripci贸n
Optional[Response]

Objeto de respuesta de la solicitud de actualizaci贸n, o Ninguno si la actualizaci贸n falla.

C贸digo fuente en 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)

Carga un archivo de conjunto de datos en el concentrador.

Par谩metros:

Nombre Tipo Descripci贸n Por defecto
file str

La ruta al archivo del conjunto de datos que se va a cargar.

None

Devuelve:

Tipo Descripci贸n
Optional[Response]

Objeto de respuesta de la solicitud de subida, o Ninguno si la subida falla.

C贸digo fuente en 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

C贸digo fuente en 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)

Inicializa una instancia de Conjunto de datos.

Par谩metros:

Nombre Tipo Descripci贸n Por defecto
page_size int

El n煤mero de elementos a solicitar por p谩gina.

None
public bool

Si los art铆culos deben ser de acceso p煤blico.

None
headers dict

Cabeceras que deben incluirse en las peticiones a la API.

None
C贸digo fuente en 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)