Bỏ để qua phần nội dung

Tài liệu tham khảo cho hub_sdk/modules/projects.py

Ghi

Tệp này có sẵn tại https://github.com/ultralytics/hub-sdk/blob/main/hub_sdk/modules/projects.py. Nếu bạn phát hiện ra một vấn đề, vui lòng giúp khắc phục nó bằng cách đóng góp Yêu cầu 🛠️ kéo. Cảm ơn bạn 🙏 !



hub_sdk.modules.projects.Projects

Căn cứ: CRUDClient

Một lớp đại diện cho khách hàng để tương tác với các Dự án thông qua các hoạt động CRUD. Lớp này mở rộng Lớp CRUDClient và cung cấp các phương pháp cụ thể để làm việc với các Dự án.

Thuộc tính:

Tên Kiểu Sự miêu tả
hub_client ProjectUpload

Một phiên bản của ProjectUpload được sử dụng để tương tác với tải lên mô hình.

id (str, None)

Mã định danh duy nhất của dự án, nếu có.

data dict

Một từ điển để lưu trữ dữ liệu dự án.

Ghi

Thuộc tính 'id' được đặt trong quá trình khởi tạo và có thể được sử dụng để xác định duy nhất một dự án. Thuộc tính 'data' được sử dụng để lưu trữ dữ liệu dự án được tìm nạp từ API.

Mã nguồn trong 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)

Khởi tạo một đối tượng Projects để tương tác với dữ liệu dự án thông qua các hoạt động CRUD.

Thông số:

Tên Kiểu Sự miêu tả Mặc định
project_id str

ID dự án để truy xuất dữ liệu.

None
headers dict

Một từ điển các tiêu đề HTTP được bao gồm trong các yêu cầu API.

None
Mã nguồn trong 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)

Tạo một dự án mới với dữ liệu được cung cấp và đặt ID dự án cho phiên bản hiện tại.

Thông số:

Tên Kiểu Sự miêu tả Mặc định
project_data dict

Một từ điển chứa dữ liệu để tạo dự án.

bắt buộc

Trở lại:

Kiểu Sự miêu tả
None

Phương thức không trả về một giá trị.

Mã nguồn trong 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)

Xóa tài nguyên dự án được đại diện bởi phiên bản này.

Thông số:

Tên Kiểu Sự miêu tả Mặc định
hard bool

Nếu True, hãy thực hiện xóa cứng (vĩnh viễn).

False
Ghi

Tham số 'cứng' xác định xem nên thực hiện xóa mềm (mặc định) hay xóa cứng. Trong xóa mềm, dự án có thể được đánh dấu là đã xóa nhưng vẫn được giữ lại trong hệ thống. Trong một bản xóa cứng, dự án sẽ bị xóa vĩnh viễn khỏi hệ thống.

Trở lại:

Kiểu Sự miêu tả
Optional[Response]

Phản hồi đối tượng từ yêu cầu xóa, hoặc Không có nếu xóa không thành công.

Mã nguồn trong 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()

Truy xuất dữ liệu cho phiên bản dự án hiện tại.

Nếu ID dự án hợp lệ đã được đặt, nó sẽ gửi yêu cầu tìm nạp dữ liệu dự án và lưu trữ nó trong phiên bản. Nếu không có ID dự án nào được đặt, nó sẽ ghi lại thông báo lỗi.

Trở lại:

Kiểu Sự miêu tả
None

Phương thức không trả về một giá trị.

Mã nguồn trong 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)

Cập nhật tài nguyên dự án được đại diện bởi phiên bản này.

Thông số:

Tên Kiểu Sự miêu tả Mặc định
data dict

Dữ liệu cập nhật cho tài nguyên dự án.

bắt buộc

Trở lại:

Kiểu Sự miêu tả
Optional[Response]

Phản hồi đối tượng từ yêu cầu cập nhật hoặc Không có nếu cập nhật không thành công.

Mã nguồn trong 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ải tệp hình ảnh lên trung tâm được liên kết với ứng dụng khách này.

Thông số:

Tên Kiểu Sự miêu tả Mặc định
file str

Đường dẫn tệp hoặc URL của hình ảnh sẽ được tải lên.

bắt buộc

Trở lại:

Kiểu Sự miêu tả
Optional[Response]

Đối tượng phản hồi từ yêu cầu hình ảnh đã tải lên hoặc Không có nếu tải lên không thành công.

Mã nguồn trong 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

Căn cứ: PaginatedList

Mã nguồn trong 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)

Khởi tạo phiên bản ProjectList.

Thông số:

Tên Kiểu Sự miêu tả Mặc định
page_size int

Số lượng mục cần yêu cầu trên mỗi trang.

None
public bool

Liệu các mục có thể truy cập công khai hay không.

None
headers dict

Tiêu đề được bao gồm trong yêu cầu API.

None
Mã nguồn trong 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)