Skip to content

Register now for

# Reference for `hub_sdk/modules/projects.py`

Note

This file is available at https://github.com/ultralytics/hub-sdk/blob/main/hub_sdk/modules/projects.py. If you spot a problem please help fix it by contributing a Pull Request 🛠️. Thank you 🙏!

## `` hub_sdk.modules.projects.Projects

    Projects(project_id: str | None = None, headers: dict[str, Any] | None = None)

Bases: `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:

Name | Type | Description
--- | --- | ---
`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.

Parameters:

Name | Type | Description | Default
--- | --- | --- | ---
`project_id` | `str` | Project ID for retrieving data. | `None`
`headers` | `Dict[str, Any]` | A dictionary of HTTP headers to be included in API requests. | `None`

Source code in `hub_sdk/modules/projects.py`

    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    def __init__(self, project_id: str | None = None, headers: dict[str, Any] | None = 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[str, Any], 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

    create_project(project_data: dict) -> None

Create a new project with the provided data and set the project ID for the current instance.

Parameters:

Name | Type | Description | Default
--- | --- | --- | ---
`project_data` | `Dict` | A dictionary containing the data for creating the project. | required

Source code in `hub_sdk/modules/projects.py`

    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    def create_project(self, project_data: dict) -> None:
        """
        Create a new project with the provided data and set the project ID for the current instance.

        Args:
            project_data (Dict): A dictionary containing the data for creating the project.
        """
        resp = super().create(project_data).json()
        self.id = resp.get("data", {}).get("id")
        self.get_data()

### `` delete

    delete(hard: bool | None = False) -> Response | None

Delete the project resource represented by this instance.

Parameters:

Name | Type | Description | Default
--- | --- | --- | ---
`hard` | `bool` | If True, perform a hard (permanent) delete. | `False`

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:

Type | Description
--- | ---
`Optional[Response]` | Response object from the delete request, or None if delete fails.

Source code in `hub_sdk/modules/projects.py`

     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    def delete(self, hard: bool | None = False) -> Response | None:
        """
        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

    get_data() -> None

Retrieve 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.

Source code in `hub_sdk/modules/projects.py`

    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    def get_data(self) -> None:
        """
        Retrieve 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.
        """
        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

    update(data: dict) -> Response | None

Update the project resource represented by this instance.

Parameters:

Name | Type | Description | Default
--- | --- | --- | ---
`data` | `Dict` | The updated data for the project resource. | required

Returns:

Type | Description
--- | ---
`Optional[Response]` | Response object from the update request, or None if update fails.

Source code in `hub_sdk/modules/projects.py`

    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    def update(self, data: dict) -> Response | None:
        """
        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

    upload_image(file: str) -> Response | None

Upload an image file to the hub associated with this client.

Parameters:

Name | Type | Description | Default
--- | --- | --- | ---
`file` | `str` | The file path or URL of the image to be uploaded. | required

Returns:

Type | Description
--- | ---
`Optional[Response]` | Response object from the uploaded image request, or None if upload fails.

Source code in `hub_sdk/modules/projects.py`

    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    def upload_image(self, file: str) -> Response | None:
        """
        Upload 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

    ProjectList(
        page_size: int | None = None,
        public: bool | None = None,
        headers: dict | None = None,
    )

Bases: `PaginatedList`

Provides a paginated list interface for querying project resources from the server.

Parameters:

Name | Type | Description | Default
--- | --- | --- | ---
`page_size` | `int` | The number of items to request per page. | `None`
`public` | `bool` | Whether the items should be publicly accessible. | `None`
`headers` | `Dict` | Headers to be included in API requests. | `None`

Source code in `hub_sdk/modules/projects.py`

    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    def __init__(self, page_size: int | None = None, public: bool | None = None, headers: dict | None = 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)

📅 Created 1 year ago ✏️ Updated 1 month ago