Skip to content

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

Note

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



hub_sdk.modules.projects.Projects

Bases : CRUDClient

Une classe représentant un client pour interagir avec les projets par le biais d'opérations CRUD. Cette classe étend la classe CRUDClient et fournit des méthodes spécifiques pour travailler avec les projets.

Attributs :

Nom Type Description
hub_client ProjectUpload

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

id (str, None)

L'identifiant unique du projet, s'il est disponible.

data dict

Un dictionnaire pour stocker les données du projet.

Note

L'attribut 'id' est défini lors de l'initialisation et peut être utilisé pour identifier un projet de façon unique. L'attribut 'data' est utilisé pour stocker les données du projet récupérées à partir de l'API.

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

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

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

    def __init__(self, project_id: Optional[str] = None, headers: Optional[Dict[str, Any]] = None):
        """
        Initialize a Projects object for interacting with project data via CRUD operations.

        Args:
            project_id (str, optional): Project ID for retrieving data.
            headers (dict, optional): A dictionary of HTTP headers to be included in API requests.
        """
        super().__init__("projects", "project", headers)
        self.hub_client = ProjectUpload(headers)
        self.id = project_id
        self.data = {}
        if project_id:
            self.get_data()

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

        If a valid project ID has been set, it sends a request to fetch the project data and stores it in the instance.
        If no project 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 project id has been set. Update the project id or create a project.")
            return

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

            if response is None:
                self.logger.error(f"Received no response from the server for project 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 project ID: {self.id}")
                return

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

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

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

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

        Args:
            project_data (dict): A dictionary containing the data for creating the project.

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

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

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

        Note:
            The 'hard' parameter determines whether to perform a soft delete (default) or a hard delete.
            In a soft delete, the project might be marked as deleted but retained in the system.
            In a hard delete, the project 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 project resource represented by this instance.

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

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

    def upload_image(self, file: str) -> Optional[Response]:
        """
        Uploads an image file to the hub associated with this client.

        Args:
            file (str): The file path or URL of the image to be uploaded.

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

__init__(project_id=None, headers=None)

Initialise un objet Projets pour interagir avec les données du projet par le biais d'opérations CRUD.

Paramètres :

Nom Type Description DĂ©faut
project_id str

ID du projet pour récupérer les données.

None
headers dict

Un dictionnaire d'en-tĂŞtes HTTP Ă  inclure dans les demandes d'API.

None
Code source dans hub_sdk/modules/projects.py
def __init__(self, project_id: Optional[str] = None, headers: Optional[Dict[str, Any]] = None):
    """
    Initialize a Projects object for interacting with project data via CRUD operations.

    Args:
        project_id (str, optional): Project ID for retrieving data.
        headers (dict, optional): A dictionary of HTTP headers to be included in API requests.
    """
    super().__init__("projects", "project", headers)
    self.hub_client = ProjectUpload(headers)
    self.id = project_id
    self.data = {}
    if project_id:
        self.get_data()

create_project(project_data)

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

Paramètres :

Nom Type Description DĂ©faut
project_data dict

Un dictionnaire contenant les données nécessaires à la création du projet.

requis

Retourne :

Type Description
None

La méthode ne renvoie pas de valeur.

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

    Args:
        project_data (dict): A dictionary containing the data for creating the project.

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

delete(hard=False)

Supprime la ressource du projet représentée par cette instance.

Paramètres :

Nom Type Description DĂ©faut
hard bool

Si c'est le cas, la suppression est définitive.

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, le projet peut être marqué comme supprimé mais conservé dans le système. Dans le cas d'une suppression dure, le projet 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/projects.py
def delete(self, hard: Optional[bool] = False) -> Optional[Response]:
    """
    Delete the project resource represented by this instance.

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

    Note:
        The 'hard' parameter determines whether to perform a soft delete (default) or a hard delete.
        In a soft delete, the project might be marked as deleted but retained in the system.
        In a hard delete, the project 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 projet actuelle.

Si un ID de projet valide a été défini, il envoie une demande pour récupérer les données du projet et les stocker dans l'instance. Si aucun identifiant de projet 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/projects.py
def get_data(self) -> None:
    """
    Retrieves data for the current project instance.

    If a valid project ID has been set, it sends a request to fetch the project data and stores it in the instance.
    If no project 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 project id has been set. Update the project id or create a project.")
        return

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

        if response is None:
            self.logger.error(f"Received no response from the server for project 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 project ID: {self.id}")
            return

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

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

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

update(data)

Met à jour la ressource du projet représentée par cette instance.

Paramètres :

Nom Type Description DĂ©faut
data dict

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

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/projects.py
def update(self, data: dict) -> Optional[Response]:
    """
    Update the project resource represented by this instance.

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

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

upload_image(file)

Télécharge un fichier image sur le hub associé à ce client.

Paramètres :

Nom Type Description DĂ©faut
file str

Le chemin d'accès au fichier ou l'URL de l'image à télécharger.

requis

Retourne :

Type Description
Optional[Response]

Objet de réponse de la demande d'image téléchargée, ou Aucun si le téléchargement échoue.

Code source dans hub_sdk/modules/projects.py
def upload_image(self, file: str) -> Optional[Response]:
    """
    Uploads an image file to the hub associated with this client.

    Args:
        file (str): The file path or URL of the image to be uploaded.

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



hub_sdk.modules.projects.ProjectList

Bases : PaginatedList

Code source dans hub_sdk/modules/projects.py
class ProjectList(PaginatedList):
    def __init__(self, page_size: int = None, public: bool = None, headers: dict = None):
        """
        Initialize a ProjectList 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 = "projects"
        super().__init__(base_endpoint, "project", page_size, public, headers)

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

Initialise une instance de liste de projets.

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/projects.py
def __init__(self, page_size: int = None, public: bool = None, headers: dict = None):
    """
    Initialize a ProjectList 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 = "projects"
    super().__init__(base_endpoint, "project", page_size, public, headers)