Overslaan naar inhoud

Referentie voor hub_sdk/modules/projects.py

Opmerking

Dit bestand is beschikbaar op https://github.com/ultralytics/hub-sdk/blob/main/hub_sdk/modules/projects .py. Als je een probleem ziet, help het dan oplossen door een Pull Request 🛠️ bij te dragen. Bedankt 🙏!



hub_sdk.modules.projects.Projects

Basis: CRUDClient

Een klasse die een client vertegenwoordigt voor interactie met Projecten door middel van CRUD-bewerkingen. Deze klasse breidt de CRUDClient klasse en biedt specifieke methoden voor het werken met Projecten.

Kenmerken:

Naam Type Beschrijving
hub_client ProjectUpload

Een instantie van ProjectUpload die wordt gebruikt voor interactie met modeluploads.

id (str, None)

De unieke identificatie van het project, indien beschikbaar.

data dict

Een woordenboek om projectgegevens in op te slaan.

Opmerking

Het "id" attribuut wordt ingesteld tijdens het initialiseren en kan worden gebruikt om een project uniek te identificeren. Het "data" attribuut wordt gebruikt om projectgegevens op te slaan die zijn opgehaald van de API.

Broncode 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 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)

Initialiseer een Projects object voor interactie met projectgegevens via CRUD operaties.

Parameters:

Naam Type Beschrijving Standaard
project_id str

Project ID voor het ophalen van gegevens.

None
headers dict

Een woordenboek van HTTP-headers die in API-verzoeken moeten worden opgenomen.

None
Broncode 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)

Creëert een nieuw project met de opgegeven gegevens en stelt de project-ID in voor de huidige instantie.

Parameters:

Naam Type Beschrijving Standaard
project_data dict

Een woordenboek met de gegevens voor het maken van het project.

vereist

Retourneert:

Type Beschrijving
None

De methode retourneert geen waarde.

Broncode 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)

Verwijder de projectbron die door deze instantie wordt vertegenwoordigd.

Parameters:

Naam Type Beschrijving Standaard
hard bool

Als dit waar is, voer dan een harde (permanente) verwijdering uit.

False
Opmerking

De parameter 'hard' bepaalt of een zachte verwijdering (standaard) of een harde verwijdering wordt uitgevoerd. Bij een zachte verwijdering wordt het project gemarkeerd als verwijderd, maar blijft het in het systeem staan. Bij een harde verwijdering wordt het project permanent uit het systeem verwijderd.

Retourneert:

Type Beschrijving
Optional[Response]

Antwoordobject van het verwijderverzoek, of geen als verwijderen mislukt.

Broncode 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()

Haalt gegevens op voor de huidige projectinstantie.

Als er een geldig project ID is ingesteld, wordt er een verzoek verzonden om de projectgegevens op te halen en op te slaan in de instantie. Als er geen project-ID is ingesteld, wordt er een foutbericht weergegeven.

Retourneert:

Type Beschrijving
None

De methode retourneert geen waarde.

Broncode 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 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)

Werk de projectbron bij die door deze instantie wordt vertegenwoordigd.

Parameters:

Naam Type Beschrijving Standaard
data dict

De bijgewerkte gegevens voor de projectbron.

vereist

Retourneert:

Type Beschrijving
Optional[Response]

Antwoordobject van het updateverzoek, of geen als de update mislukt.

Broncode 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)

Uploadt een afbeeldingsbestand naar de hub die aan deze client is gekoppeld.

Parameters:

Naam Type Beschrijving Standaard
file str

Het bestandspad of de URL van de afbeelding die moet worden geüpload.

vereist

Retourneert:

Type Beschrijving
Optional[Response]

Antwoordobject van het geüploade afbeeldingsverzoek, of Geen als het uploaden mislukt.

Broncode 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

Basis: PaginatedList

Broncode 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"
        super().__init__(base_endpoint, "project", page_size, public, headers)

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

Initialiseer een ProjectList instantie.

Parameters:

Naam Type Beschrijving Standaard
page_size int

Het aantal items dat per pagina moet worden opgevraagd.

None
public bool

Of de items openbaar toegankelijk moeten zijn.

None
headers dict

Headers die moeten worden opgenomen in API-verzoeken.

None
Broncode 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"
    super().__init__(base_endpoint, "project", page_size, public, headers)