Vai al contenuto

Riferimento per hub_sdk/modules/projects.py

Nota

Questo file è disponibile all'indirizzo https://github.com/ultralytics/ hub-sdk/blob/main/ hub_sdk/modules/projects .py. Se riscontri un problema, contribuisci a risolverlo inviando una Pull Request 🛠️. Grazie 🙏!



hub_sdk.modules.projects.Projects

Basi: CRUDClient

Una classe che rappresenta un client per interagire con i progetti attraverso operazioni CRUD. Questa classe estende la classe CRUDClient e fornisce metodi specifici per lavorare con i progetti.

Attributi:

Nome Tipo Descrizione
hub_client ProjectUpload

Un'istanza di ProjectUpload utilizzata per interagire con il caricamento dei modelli.

id (str, None)

L'identificativo unico del progetto, se disponibile.

data dict

Un dizionario per memorizzare i dati del progetto.

Nota

L'attributo "id" viene impostato durante l'inizializzazione e può essere utilizzato per identificare in modo univoco un progetto. L'attributo "data" viene utilizzato per memorizzare i dati del progetto recuperati dall'API.

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

    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)

Inizializza un oggetto Projects per interagire con i dati del progetto tramite operazioni CRUD.

Parametri:

Nome Tipo Descrizione Predefinito
project_id str

ID del progetto per il recupero dei dati.

None
headers dict

Un dizionario di intestazioni HTTP da includere nelle richieste API.

None
Codice sorgente in 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)

Crea un nuovo progetto con i dati forniti e imposta l'ID del progetto per l'istanza corrente.

Parametri:

Nome Tipo Descrizione Predefinito
project_data dict

Un dizionario contenente i dati per la creazione del progetto.

richiesto

Restituzione:

Tipo Descrizione
None

Il metodo non restituisce un valore.

Codice sorgente in 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)

Elimina la risorsa del progetto rappresentata da questa istanza.

Parametri:

Nome Tipo Descrizione Predefinito
hard bool

Se Vero, esegue una cancellazione definitiva (permanente).

False
Nota

Il parametro "hard" determina se eseguire una cancellazione morbida (default) o una cancellazione rigida. In una cancellazione morbida, il progetto potrebbe essere contrassegnato come eliminato ma conservato nel sistema. In caso di cancellazione definitiva, il progetto viene rimosso in modo permanente dal sistema.

Restituzione:

Tipo Descrizione
Optional[Response]

Oggetto di risposta della richiesta di cancellazione, oppure Nessuno se la cancellazione fallisce.

Codice sorgente in 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()

Recupera i dati dell'istanza di progetto corrente.

Se è stato impostato un ID progetto valido, invia una richiesta per recuperare i dati del progetto e li memorizza nell'istanza. Se non è stato impostato alcun ID di progetto, viene visualizzato un messaggio di errore.

Restituzione:

Tipo Descrizione
None

Il metodo non restituisce un valore.

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

update(data)

Aggiorna la risorsa del progetto rappresentata da questa istanza.

Parametri:

Nome Tipo Descrizione Predefinito
data dict

I dati aggiornati della risorsa del progetto.

richiesto

Restituzione:

Tipo Descrizione
Optional[Response]

Oggetto di risposta della richiesta di aggiornamento, oppure Nessuno se l'aggiornamento fallisce.

Codice sorgente in 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)

Carica un file immagine sul sito hub associato a questo client.

Parametri:

Nome Tipo Descrizione Predefinito
file str

Il percorso del file o l'URL dell'immagine da caricare.

richiesto

Restituzione:

Tipo Descrizione
Optional[Response]

Oggetto di risposta della richiesta di caricamento dell'immagine, oppure Nessuno se il caricamento fallisce.

Codice sorgente in 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

Basi: PaginatedList

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

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

Inizializza un'istanza di ProjectList.

Parametri:

Nome Tipo Descrizione Predefinito
page_size int

Il numero di elementi da richiedere per pagina.

None
public bool

Se gli articoli devono essere accessibili al pubblico.

None
headers dict

Intestazioni da includere nelle richieste API.

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