Saltar al contenido

Referencia para hub_sdk/hub_client.py

Nota

Este archivo est谩 disponible en https://github.com/ultralytics/hub-sdk/blob/main/hub_sdk/hub_client .py. Si detectas alg煤n problema, por favor, ayuda a solucionarlo contribuyendo con una Pull Request 馃洜锔. 隆Gracias 馃檹!



hub_sdk.hub_client.HUBClient

Bases: Auth

Una clase cliente para interactuar con un servicio HUB, ampliando las capacidades de autenticaci贸n.

Atributos:

Nombre Tipo Descripci贸n
authenticated bool

Indica si el cliente est谩 autentificado.

api_key str

La clave API para la autenticaci贸n.

id_token str

El token de identidad para la autenticaci贸n.

C贸digo fuente en 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)

Inicializa la instancia HUBClient.

Par谩metros:

Nombre Tipo Descripci贸n Por defecto
credentials dict

Un diccionario que contiene las credenciales de autenticaci贸n. Si es Ninguno, el cliente intentar谩 recuperar la clave API de la variable de entorno "HUB_API_KEY".

None
C贸digo fuente en 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)

Devuelve una instancia de la clase Conjuntos de datos para interactuar con los conjuntos de datos.

Par谩metros:

Nombre Tipo Descripci贸n Por defecto
dataset_id str

El identificador del conjunto de datos. Si se proporciona, devuelve una instancia asociada al identificador del conjunto de datos especificado.

None

Devuelve:

Tipo Descripci贸n
Datasets

Una instancia de la clase Conjuntos de datos.

C贸digo fuente en 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)

Devuelve una instancia de DatasetList para interactuar con una lista de conjuntos de datos.

Par谩metros:

Nombre Tipo Descripci贸n Por defecto
page_size int

El n煤mero de conjuntos de datos por p谩gina.

10
public bool

Pasa verdadero para recuperar la lista de conjuntos de datos P煤blicos.

None

Devuelve:

Tipo Descripci贸n
DatasetList

Una instancia de la clase DatasetList.

C贸digo fuente en 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)

Inicia sesi贸n en el cliente utilizando las credenciales de autenticaci贸n proporcionadas.

Par谩metros:

Nombre Tipo Descripci贸n Por defecto
api_key str

La clave API para la autenticaci贸n.

None
id_token str

El token de identidad para la autenticaci贸n.

None
email str

Correo electr贸nico del usuario.

None
password str

Contrase帽a del usuario.

None
C贸digo fuente en 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)

Devuelve una instancia de la clase Modelos para interactuar con los modelos.

Par谩metros:

Nombre Tipo Descripci贸n Por defecto
model_id str

El identificador del modelo. Si se proporciona, devuelve una instancia asociada al model_id especificado.

None

Devuelve:

Tipo Descripci贸n
Models

Una instancia de la clase Modelos.

C贸digo fuente en 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)

Devuelve una instancia de ModelList para interactuar con una lista de modelos.

Par谩metros:

Nombre Tipo Descripci贸n Por defecto
page_size int

El n煤mero de modelos por p谩gina.

10
public bool

Pasa verdadero para recuperar la lista de modelos P煤blicos.

None

Devuelve:

Tipo Descripci贸n
ModelList

Una instancia de la clase ModelList.

C贸digo fuente en 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)

Devuelve una instancia de la clase Proyectos para interactuar con los Proyectos.

Par谩metros:

Nombre Tipo Descripci贸n Por defecto
project_id str

El identificador del proyecto. Si se proporciona, devuelve una instancia asociada al identificador de proyecto especificado.

None

Devuelve:

Tipo Descripci贸n
Projects

Una instancia de la clase Proyectos.

C贸digo fuente en 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)

Devuelve una instancia de ProjectList para interactuar con una lista de proyectos.

Par谩metros:

Nombre Tipo Descripci贸n Por defecto
page_size int

El n煤mero de proyectos por p谩gina.

10
public bool

Pasa verdadero para recuperar la lista de modelos P煤blicos.

None

Devuelve:

Tipo Descripci贸n
ProjectList

Una instancia de la clase ListaDeProyectos.

C贸digo fuente en 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)

Devuelve una instancia de la clase Equipos para interactuar con los equipos.

C贸digo fuente en 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)

Obtiene una lista de los miembros del equipo con paginaci贸n opcional.

C贸digo fuente en 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)

Devuelve una instancia de la clase Usuarios para interactuar con los Proyectos.

Par谩metros:

Nombre Tipo Descripci贸n Por defecto
user_id str

El identificador del usuario. Si se proporciona, devuelve una instancia asociada al user_id especificado.

None

Devuelve:

Tipo Descripci贸n
Users

Una instancia de la clase Proyectos.

C贸digo fuente en 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)

Una funci贸n decoradora para garantizar que el m茅todo envuelto s贸lo pueda ejecutarse si el cliente est谩 autenticado.

Par谩metros:

Nombre Tipo Descripci贸n Por defecto
func callable

El m茅todo a envolver.

necesario

Devuelve:

Tipo Descripci贸n
callable

El m茅todo envuelto.

C贸digo fuente en 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