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

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

Ghi

Tệp này có sẵn tại https://github.com/ultralytics/hub-sdk/blob/main/hub_sdk/hub_client.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.hub_client.HUBClient

Căn cứ: Auth

Một lớp máy khách để tương tác với dịch vụ HUB, mở rộng khả năng xác thực.

Thuộc tính:

Tên Kiểu Sự miêu tả
authenticated bool

Cho biết liệu máy khách có được xác thực hay không.

api_key str

Khóa API để xác thực.

id_token str

Mã thông báo nhận dạng để xác thực.

Mã nguồn trong hub_sdk/hub_client.py
class HUBClient(Auth):
    """
    A client class for interacting with a HUB service, extending authentication capabilities.

    Attributes:
        authenticated (bool): Indicates whether the client is authenticated.
        api_key (str): The API key for authentication.
        id_token (str): The identity token for authentication.
    """

    def __init__(self, credentials: Optional[Dict] = None):
        """
        Initializes the HUBClient instance.

        Args:
            credentials (dict, optional): A dictionary containing authentication credentials.
                            If None, the client will attempt to retrieve the API key
                            from the environment variable "HUB_API_KEY".
        """
        super().__init__()
        self.authenticated = False
        if not credentials:
            self.api_key = os.environ.get("HUB_API_KEY")  # Safely retrieve the API key from an environment variable.
            credentials = {"api_key": self.api_key}

        self.login(**credentials)

    def login(self, api_key=None, id_token=None, email=None, password=None):
        """
        Logs in the client using provided authentication credentials.

        Args:
            api_key (str, optional): The API key for authentication.
            id_token (str, optional): The identity token for authentication.
            email (str, optional): User's email.
            password (str, optional): User's password.
        """
        self.api_key = api_key
        self.id_token = id_token
        if (
            (self.api_key or self.id_token)
            and self.authenticate()
            or not self.api_key
            and not self.id_token
            and email
            and password
            and self.authorize(email, password)
        ):
            self.authenticated = True

    @require_authentication
    def model(self, model_id: Optional[str] = None) -> Models:
        """
        Returns an instance of the Models class for interacting with models.

        Args:
            model_id (str, optional): The identifier of the model. If provided,
                returns an instance associated with the specified model_id.

        Returns:
            (Models): An instance of the Models class.
        """
        return Models(model_id, self.get_auth_header())

    @require_authentication
    def dataset(self, dataset_id: str = None) -> Datasets:
        """
        Returns an instance of the Datasets class for interacting with datasets.

        Args:
            dataset_id (str, optional): The identifier of the dataset. If provided,
                returns an instance associated with the specified dataset_id.

        Returns:
            (Datasets): An instance of the Datasets class.
        """
        return Datasets(dataset_id, self.get_auth_header())

    @require_authentication
    def team(self, arg):
        """Returns an instance of the Teams class for interacting with teams."""
        raise Exception("Coming Soon")

    @require_authentication
    def project(self, project_id: Optional[str] = None) -> Projects:
        """
        Returns an instance of the Projects class for interacting with Projects.

        Args:
            project_id (str, optional): The identifier of the project. If provided,
                returns an instance associated with the specified project_id.

        Returns:
            (Projects): An instance of the Projects class.
        """
        return Projects(project_id, self.get_auth_header())

    @require_authentication
    def user(self, user_id: Optional[str] = None) -> Users:
        """
        Returns an instance of the Users class for interacting with Projects.

        Args:
            user_id (str, optional): The identifier of the user. If provided,
                returns an instance associated with the specified user_id.

        Returns:
            (Users): An instance of the Projects class.
        """
        return Users(user_id, self.get_auth_header())

    @require_authentication
    def model_list(self, page_size: Optional[int] = 10, public: Optional[bool] = None) -> ModelList:
        """
        Returns a ModelList instance for interacting with a list of models.

        Args:
            page_size (int, optional): The number of models per page.
            public (bool, optional): Pass true to retrieve list of Public models list.

        Returns:
            (ModelList): An instance of the ModelList class.
        """
        return ModelList(page_size, public, self.get_auth_header())

    @require_authentication
    def project_list(self, page_size: Optional[int] = 10, public: Optional[bool] = None) -> ProjectList:
        """
        Returns a ProjectList instance for interacting with a list of projects.

        Args:
            page_size (int, optional): The number of projects per page.
            public (bool, optional): Pass true to retrieve list of Public models list.

        Returns:
            (ProjectList): An instance of the ProjectList class.
        """
        return ProjectList(page_size, public, self.get_auth_header())

    @require_authentication
    def dataset_list(self, page_size: Optional[int] = 10, public: Optional[bool] = None) -> DatasetList:
        """
        Returns a DatasetList instance for interacting with a list of datasets.

        Args:
            page_size (int, optional): The number of datasets per page.
            public (bool, optional): Pass true to retrieve list of Public dataset list.

        Returns:
            (DatasetList): An instance of the DatasetList class.
        """
        return DatasetList(page_size, public, self.get_auth_header())

    @require_authentication
    def team_list(self, page_size=None, public=None):
        """Fetches a list of team members with optional pagination."""
        raise Exception("Coming Soon")

__init__(credentials=None)

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

Thông số:

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

Một từ điển chứa thông tin xác thực. Nếu Không, máy khách sẽ cố gắng truy xuất khóa API từ biến môi trường "HUB_API_KEY".

None
Mã nguồn trong hub_sdk/hub_client.py
def __init__(self, credentials: Optional[Dict] = None):
    """
    Initializes the HUBClient instance.

    Args:
        credentials (dict, optional): A dictionary containing authentication credentials.
                        If None, the client will attempt to retrieve the API key
                        from the environment variable "HUB_API_KEY".
    """
    super().__init__()
    self.authenticated = False
    if not credentials:
        self.api_key = os.environ.get("HUB_API_KEY")  # Safely retrieve the API key from an environment variable.
        credentials = {"api_key": self.api_key}

    self.login(**credentials)

dataset(dataset_id=None)

Trả về một thể hiện của lớp Datasets để tương tác với các tập dữ liệu.

Thông số:

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

Mã định danh của tập dữ liệu. Nếu được cung cấp, Trả về một phiên bản được liên kết với dataset_id đã chỉ định.

None

Trở lại:

Kiểu Sự miêu tả
Datasets

Một thể hiện của lớp Datasets.

Mã nguồn trong hub_sdk/hub_client.py
@require_authentication
def dataset(self, dataset_id: str = None) -> Datasets:
    """
    Returns an instance of the Datasets class for interacting with datasets.

    Args:
        dataset_id (str, optional): The identifier of the dataset. If provided,
            returns an instance associated with the specified dataset_id.

    Returns:
        (Datasets): An instance of the Datasets class.
    """
    return Datasets(dataset_id, self.get_auth_header())

dataset_list(page_size=10, public=None)

Trả về phiên bản DatasetList để tương tác với danh sách các tập dữ liệu.

Thông số:

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

Số lượng bộ dữ liệu trên mỗi trang.

10
public bool

Pass true để truy xuất danh sách Public dataset.

None

Trở lại:

Kiểu Sự miêu tả
DatasetList

Một thể hiện của lớp DatasetList.

Mã nguồn trong hub_sdk/hub_client.py
@require_authentication
def dataset_list(self, page_size: Optional[int] = 10, public: Optional[bool] = None) -> DatasetList:
    """
    Returns a DatasetList instance for interacting with a list of datasets.

    Args:
        page_size (int, optional): The number of datasets per page.
        public (bool, optional): Pass true to retrieve list of Public dataset list.

    Returns:
        (DatasetList): An instance of the DatasetList class.
    """
    return DatasetList(page_size, public, self.get_auth_header())

login(api_key=None, id_token=None, email=None, password=None)

Đăng nhập vào máy khách bằng thông tin xác thực được cung cấp.

Thông số:

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

Khóa API để xác thực.

None
id_token str

Mã thông báo nhận dạng để xác thực.

None
email str

Email của người dùng.

None
password str

Mật khẩu người dùng.

None
Mã nguồn trong hub_sdk/hub_client.py
def login(self, api_key=None, id_token=None, email=None, password=None):
    """
    Logs in the client using provided authentication credentials.

    Args:
        api_key (str, optional): The API key for authentication.
        id_token (str, optional): The identity token for authentication.
        email (str, optional): User's email.
        password (str, optional): User's password.
    """
    self.api_key = api_key
    self.id_token = id_token
    if (
        (self.api_key or self.id_token)
        and self.authenticate()
        or not self.api_key
        and not self.id_token
        and email
        and password
        and self.authorize(email, password)
    ):
        self.authenticated = True

model(model_id=None)

Trả về một thể hiện của lớp Mô hình để tương tác với các mô hình.

Thông số:

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

Mã định danh của mô hình. Nếu được cung cấp, Trả về một phiên bản được liên kết với model_id đã chỉ định.

None

Trở lại:

Kiểu Sự miêu tả
Models

Một thể hiện của lớp Models.

Mã nguồn trong hub_sdk/hub_client.py
@require_authentication
def model(self, model_id: Optional[str] = None) -> Models:
    """
    Returns an instance of the Models class for interacting with models.

    Args:
        model_id (str, optional): The identifier of the model. If provided,
            returns an instance associated with the specified model_id.

    Returns:
        (Models): An instance of the Models class.
    """
    return Models(model_id, self.get_auth_header())

model_list(page_size=10, public=None)

Trả về một phiên bản ModelList để tương tác với một danh sách các mô hình.

Thông số:

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

Số lượng mô hình trên mỗi trang.

10
public bool

Vượt qua true để truy xuất danh sách các mô hình công khai danh sách.

None

Trở lại:

Kiểu Sự miêu tả
ModelList

Một thể hiện của lớp ModelList.

Mã nguồn trong hub_sdk/hub_client.py
@require_authentication
def model_list(self, page_size: Optional[int] = 10, public: Optional[bool] = None) -> ModelList:
    """
    Returns a ModelList instance for interacting with a list of models.

    Args:
        page_size (int, optional): The number of models per page.
        public (bool, optional): Pass true to retrieve list of Public models list.

    Returns:
        (ModelList): An instance of the ModelList class.
    """
    return ModelList(page_size, public, self.get_auth_header())

project(project_id=None)

Trả về một thể hiện của lớp Dự án để tương tác với Dự án.

Thông số:

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

Mã định danh của dự án. Nếu được cung cấp, Trả về một phiên bản được liên kết với project_id đã chỉ định.

None

Trở lại:

Kiểu Sự miêu tả
Projects

Một ví dụ của lớp Dự án.

Mã nguồn trong hub_sdk/hub_client.py
@require_authentication
def project(self, project_id: Optional[str] = None) -> Projects:
    """
    Returns an instance of the Projects class for interacting with Projects.

    Args:
        project_id (str, optional): The identifier of the project. If provided,
            returns an instance associated with the specified project_id.

    Returns:
        (Projects): An instance of the Projects class.
    """
    return Projects(project_id, self.get_auth_header())

project_list(page_size=10, public=None)

Trả về một phiên bản ProjectList để tương tác với một danh sách các dự án.

Thông số:

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

Số lượng dự án trên mỗi trang.

10
public bool

Vượt qua true để truy xuất danh sách các mô hình công khai danh sách.

None

Trở lại:

Kiểu Sự miêu tả
ProjectList

Một thể hiện của lớp ProjectList.

Mã nguồn trong hub_sdk/hub_client.py
@require_authentication
def project_list(self, page_size: Optional[int] = 10, public: Optional[bool] = None) -> ProjectList:
    """
    Returns a ProjectList instance for interacting with a list of projects.

    Args:
        page_size (int, optional): The number of projects per page.
        public (bool, optional): Pass true to retrieve list of Public models list.

    Returns:
        (ProjectList): An instance of the ProjectList class.
    """
    return ProjectList(page_size, public, self.get_auth_header())

team(arg)

Trả về một thể hiện của lớp Teams để tương tác với các nhóm.

Mã nguồn trong hub_sdk/hub_client.py
@require_authentication
def team(self, arg):
    """Returns an instance of the Teams class for interacting with teams."""
    raise Exception("Coming Soon")

team_list(page_size=None, public=None)

Tìm nạp danh sách các thành viên trong nhóm với phân trang tùy chọn.

Mã nguồn trong hub_sdk/hub_client.py
@require_authentication
def team_list(self, page_size=None, public=None):
    """Fetches a list of team members with optional pagination."""
    raise Exception("Coming Soon")

user(user_id=None)

Trả về một thể hiện của lớp Users để tương tác với Projects.

Thông số:

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

Mã định danh của người dùng. Nếu được cung cấp, Trả về một phiên bản được liên kết với user_id đã chỉ định.

None

Trở lại:

Kiểu Sự miêu tả
Users

Một ví dụ của lớp Dự án.

Mã nguồn trong hub_sdk/hub_client.py
@require_authentication
def user(self, user_id: Optional[str] = None) -> Users:
    """
    Returns an instance of the Users class for interacting with Projects.

    Args:
        user_id (str, optional): The identifier of the user. If provided,
            returns an instance associated with the specified user_id.

    Returns:
        (Users): An instance of the Projects class.
    """
    return Users(user_id, self.get_auth_header())



hub_sdk.hub_client.require_authentication(func)

Một chức năng trang trí để đảm bảo rằng phương thức wrapped chỉ có thể được thực thi nếu máy khách được xác thực.

Thông số:

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

Phương pháp được bọc.

bắt buộc

Trở lại:

Kiểu Sự miêu tả
callable

Phương pháp bọc.

Mã nguồn trong hub_sdk/hub_client.py
def require_authentication(func) -> callable:
    """
    A decorator function to ensure that the wrapped method can only be executed if the client is authenticated.

    Args:
        func (callable): The method to be wrapped.

    Returns:
        (callable): The wrapped method.
    """

    def wrapper(self, *args, **kwargs):
        """Decorator to ensure a method is called only if the user is authenticated."""
        if not self.authenticated and not kwargs.get("public"):
            raise PermissionError("Access Denied: Authentication required.")
        return func(self, *args, **kwargs)

    return wrapper