Zum Inhalt springen

Referenz fĂŒr hub_sdk/modules/datasets.py

Hinweis

Diese Datei ist verfĂŒgbar unter https://github.com/ultralytics/ hub-sdk/blob/main/ hub_sdk/modules/datasets .py. Wenn du ein Problem entdeckst, hilf bitte mit, es zu beheben, indem du einen Pull Request đŸ› ïž einreichst. Vielen Dank 🙏!



hub_sdk.modules.datasets.Datasets

Basen: CRUDClient

Eine Klasse, die einen Client fĂŒr die Interaktion mit Datasets durch CRUD-Operationen darstellt. Diese Klasse erweitert die CRUDClient und bietet spezielle Methoden fĂŒr die Arbeit mit Datasets.

Attribute:

Name Typ Beschreibung
hub_client DatasetUpload

Eine Instanz von DatasetUpload, die fĂŒr die Interaktion mit Modell-Uploads verwendet wird.

id (str, None)

Der eindeutige Bezeichner des Datensatzes, falls vorhanden.

data dict

Ein Wörterbuch zum Speichern von Datensatzdaten.

Hinweis

Das Attribut "id" wird bei der Initialisierung gesetzt und kann zur eindeutigen Identifizierung eines Datensatzes verwendet werden. Das Attribut "data" wird verwendet, um Datensatzdaten zu speichern, die von der API abgerufen werden.

Quellcode in 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 self.id:
            resp = super().read(self.id).json()
            self.data = resp.get("data", {})
            self.logger.debug("Dataset id is %s", self.id)
        else:
            self.logger.error("No dataset id has been set. Update the dataset id or create a dataset.")

    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, type: str) -> Optional[str]:
        """
        Get dataset download link.

        Args:
            type (str):

        Returns:
            (Optional[str]): Return download link or None if the link is not available.
        """
        try:
            payload = {"collection": "datasets", "docId": self.id, "object": type}
            endpoint = f"{HUB_FUNCTIONS_ROOT}/v1/storage"
            response = self.post(endpoint, json=payload)
            json = response.json()
            return json.get("data", {}).get("url")
        except Exception as e:
            self.logger.error(f"Failed to download file file for {self.name}: %s", e)
            raise e

__init__(dataset_id=None, headers=None)

Initialisiere einen Datasets-Client.

Parameter:

Name Typ Beschreibung Standard
dataset_id str

Eindeutige ID des Datensatzes.

None
headers dict

Kopfzeilen, die in HTTP-Anfragen enthalten sein mĂŒssen.

None
Quellcode in 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)

Erstellt ein neues Dataset mit den angegebenen Daten und setzt die Dataset-ID fĂŒr die aktuelle Instanz.

Parameter:

Name Typ Beschreibung Standard
dataset_data dict

Ein Wörterbuch, das die Daten fĂŒr die Erstellung des Datensatzes enthĂ€lt.

erforderlich

Retouren:

Typ Beschreibung
None

Die Methode gibt keinen Wert zurĂŒck.

Quellcode in 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)

Lösche die Ressource des Datensatzes, die durch diese Instanz reprÀsentiert wird.

Parameter:

Name Typ Beschreibung Standard
hard bool

Wenn True, fĂŒhre eine harte Löschung durch.

False
Hinweis

Der Parameter "hart" legt fest, ob ein weiches Löschen (Standard) oder ein hartes Löschen durchgefĂŒhrt werden soll. Bei einer weichen Löschung wird der Datensatz zwar als gelöscht markiert, bleibt aber im System erhalten. Bei einer harten Löschung wird der Datensatz dauerhaft aus dem System entfernt.

Retouren:

Typ Beschreibung
Optional[Response]

Antwortobjekt der Löschanfrage oder Keine, wenn das Löschen fehlschlÀgt.

Quellcode in 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()

Ruft die Daten fĂŒr die aktuelle Datensatzinstanz ab.

Wenn eine gĂŒltige Datensatz-ID festgelegt wurde, sendet er eine Anfrage, um die Datensatzdaten zu holen und speichert sie in der Instanz. Wenn keine Datensatz-ID festgelegt wurde, wird eine Fehlermeldung ausgegeben.

Retouren:

Typ Beschreibung
None

Die Methode gibt keinen Wert zurĂŒck.

Quellcode in 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 self.id:
        resp = super().read(self.id).json()
        self.data = resp.get("data", {})
        self.logger.debug("Dataset id is %s", self.id)
    else:
        self.logger.error("No dataset id has been set. Update the dataset id or create a dataset.")

Hol dir den Download-Link fĂŒr den Datensatz.

Parameter:

Name Typ Beschreibung Standard
type str
erforderlich

Retouren:

Typ Beschreibung
Optional[str]

Gibt den Download-Link zurĂŒck oder Keine, wenn der Link nicht verfĂŒgbar ist.

Quellcode in hub_sdk/modules/datasets.py
def get_download_link(self, type: str) -> Optional[str]:
    """
    Get dataset download link.

    Args:
        type (str):

    Returns:
        (Optional[str]): Return download link or None if the link is not available.
    """
    try:
        payload = {"collection": "datasets", "docId": self.id, "object": type}
        endpoint = f"{HUB_FUNCTIONS_ROOT}/v1/storage"
        response = self.post(endpoint, json=payload)
        json = response.json()
        return json.get("data", {}).get("url")
    except Exception as e:
        self.logger.error(f"Failed to download file file for {self.name}: %s", e)
        raise e

update(data)

Aktualisiere die durch diese Instanz reprÀsentierte Datensatzressource.

Parameter:

Name Typ Beschreibung Standard
data dict

Die aktualisierten Daten fĂŒr die Ressource Datensatz.

erforderlich

Retouren:

Typ Beschreibung
Optional[Response]

Antwortobjekt der Aktualisierungsanfrage oder Keine, wenn die Aktualisierung fehlschlÀgt.

Quellcode in 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)

LĂ€dt eine Datensatzdatei auf hub hoch.

Parameter:

Name Typ Beschreibung Standard
file str

Der Pfad zu der hochzuladenden Datensatzdatei.

None

Retouren:

Typ Beschreibung
Optional[Response]

Antwortobjekt der Upload-Anforderung oder Keine, wenn der Upload fehlschlÀgt.

Quellcode in 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

Basen: PaginatedList

Quellcode in 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"
        if public:
            base_endpoint = f"public/{base_endpoint}"
        super().__init__(base_endpoint, "dataset", page_size, headers)

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

Initialisiere eine Dataset-Instanz.

Parameter:

Name Typ Beschreibung Standard
page_size int

Die Anzahl der anzufordernden Artikel pro Seite.

None
public bool

Ob die GegenstÀnde öffentlich zugÀnglich sein sollen.

None
headers dict

Kopfzeilen, die in API-Anfragen enthalten sein mĂŒssen.

None
Quellcode in 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"
    if public:
        base_endpoint = f"public/{base_endpoint}"
    super().__init__(base_endpoint, "dataset", page_size, headers)