Skip to content

Référence pour hub_sdk/modules/users.py

Note

Ce fichier est disponible à l'adresse https://github.com/ultralytics/hub-sdk/blob/main/hub_sdk/modules/users .py. Si vous repérez un problème, veuillez aider à le corriger en contribuant à une Pull Request 🛠️. Merci 🙏 !



hub_sdk.modules.users.Users

Bases : CRUDClient

Une classe représentant un client pour interagir avec les utilisateurs par le biais d'opérations CRUD. Cette classe étend la classe CRUDClient et fournit des méthodes spécifiques pour travailler avec les utilisateurs.

Attributs :

Nom Type Description
id (str, None)

L'identifiant unique de l'utilisateur, s'il est disponible.

data dict

Un dictionnaire pour stocker les données de l'utilisateur.

Note

L'attribut 'id' est défini lors de l'initialisation et peut être utilisé pour identifier un utilisateur de façon unique. L'attribut 'data' est utilisé pour stocker les données de l'utilisateur extraites de l'API.

Code source dans hub_sdk/modules/users.py
class Users(CRUDClient):
    """
    A class representing a client for interacting with Users through CRUD operations. This class extends the CRUDClient
    class and provides specific methods for working with Users.

    Attributes:
        id (str, None): The unique identifier of the user, if available.
        data (dict): A dictionary to store user data.

    Note:
        The 'id' attribute is set during initialization and can be used to uniquely identify a user.
        The 'data' attribute is used to store user data fetched from the API.
    """

    def __init__(self, user_id: Optional[str] = None, headers: Optional[Dict[str, Any]] = None) -> None:
        """
        Initialize a Users object for interacting with user data via CRUD operations.

        Args:
            user_id (str, optional): The unique identifier of the user.
            headers (dict, optional): A dictionary of HTTP headers to be included in API requests.
        """
        super().__init__("users", "user", headers)
        self.id = user_id
        self.data = {}
        if user_id:
            self.get_data()

    def get_data(self) -> None:
        """
        Retrieves data for the current user instance.

        If a valid user ID has been set, it sends a request to fetch the user data and stores it in the instance.
        If no user 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 user id has been set. Update the user id or create a user.")
            return

        try:
            response = super().read(self.id)

            if response is None:
                self.logger.error(f"Received no response from the server for user 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 user ID: {self.id}")
                return

            resp_data = response.json()
            if resp_data is None:
                self.logger.error(f"No data received in the response for user ID: {self.id}")
                return

            data = resp_data.get("data", {})
            self.data = self._reconstruct_data(data)
            self.logger.debug(f"User data retrieved for ID: {self.id}")

        except Exception as e:
            self.logger.error(f"An error occurred while retrieving data for user ID: {self.id}, {str(e)}")

    def create_user(self, user_data: dict) -> None:
        """
        Creates a new user with the provided data and sets the user ID for the current instance.

        Args:
            user_data (dict): A dictionary containing the data for creating the user.

        Returns:
            (None): The method does not return a value.
        """
        resp = super().create(user_data).json()
        self.id = resp.get("data", {}).get("id")
        self.get_data()

    def delete(self, hard: bool = False) -> Optional[Response]:
        """
        Delete the user resource represented by this instance.

        Args:
            hard (bool, optional): If True, perform a hard delete.

        Note:
            The 'hard' parameter determines whether to perform a soft delete (default) or a hard delete.
            In a soft delete, the model might be marked as deleted but retained in the system.
            In a hard delete, the model 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 user resource represented by this instance.

        Args:
            data (dict): The updated data for the user resource.

        Returns:
            (Optional[Response]): Response object from the update request, or None if update fails
        """
        return super().update(self.id, data)

__init__(user_id=None, headers=None)

Initialise un objet Utilisateurs pour interagir avec les données des utilisateurs par le biais d'opérations CRUD.

Paramètres :

Nom Type Description DĂ©faut
user_id str

L'identifiant unique de l'utilisateur.

None
headers dict

Un dictionnaire d'en-tĂŞtes HTTP Ă  inclure dans les demandes d'API.

None
Code source dans hub_sdk/modules/users.py
def __init__(self, user_id: Optional[str] = None, headers: Optional[Dict[str, Any]] = None) -> None:
    """
    Initialize a Users object for interacting with user data via CRUD operations.

    Args:
        user_id (str, optional): The unique identifier of the user.
        headers (dict, optional): A dictionary of HTTP headers to be included in API requests.
    """
    super().__init__("users", "user", headers)
    self.id = user_id
    self.data = {}
    if user_id:
        self.get_data()

create_user(user_data)

Crée un nouvel utilisateur avec les données fournies et définit l'identifiant de l'instance actuelle.

Paramètres :

Nom Type Description DĂ©faut
user_data dict

Un dictionnaire contenant les données nécessaires à la création de l'utilisateur.

requis

Retourne :

Type Description
None

La méthode ne renvoie pas de valeur.

Code source dans hub_sdk/modules/users.py
def create_user(self, user_data: dict) -> None:
    """
    Creates a new user with the provided data and sets the user ID for the current instance.

    Args:
        user_data (dict): A dictionary containing the data for creating the user.

    Returns:
        (None): The method does not return a value.
    """
    resp = super().create(user_data).json()
    self.id = resp.get("data", {}).get("id")
    self.get_data()

delete(hard=False)

Supprime la ressource utilisateur représentée par cette instance.

Paramètres :

Nom Type Description DĂ©faut
hard bool

Si c'est le cas, effectue un effacement définitif.

False
Note

Le paramètre 'hard' détermine s'il faut effectuer une suppression douce (par défaut) ou une suppression dure. Dans le cas d'une suppression douce, le modèle peut être marqué comme supprimé mais conservé dans le système. Dans le cas d'une suppression dure, le modèle est définitivement supprimé du système.

Retourne :

Type Description
Optional[Response]

Objet de réponse de la demande d'effacement, ou Aucun si l'effacement échoue.

Code source dans hub_sdk/modules/users.py
def delete(self, hard: bool = False) -> Optional[Response]:
    """
    Delete the user resource represented by this instance.

    Args:
        hard (bool, optional): If True, perform a hard delete.

    Note:
        The 'hard' parameter determines whether to perform a soft delete (default) or a hard delete.
        In a soft delete, the model might be marked as deleted but retained in the system.
        In a hard delete, the model 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()

Récupère les données de l'instance d'utilisateur actuelle.

Si un ID utilisateur valide a été défini, il envoie une demande pour récupérer les données de l'utilisateur et les stocker dans l'instance. Si aucun identifiant d'utilisateur n'a été défini, un message d'erreur est affiché.

Retourne :

Type Description
None

La méthode ne renvoie pas de valeur.

Code source dans hub_sdk/modules/users.py
def get_data(self) -> None:
    """
    Retrieves data for the current user instance.

    If a valid user ID has been set, it sends a request to fetch the user data and stores it in the instance.
    If no user 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 user id has been set. Update the user id or create a user.")
        return

    try:
        response = super().read(self.id)

        if response is None:
            self.logger.error(f"Received no response from the server for user 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 user ID: {self.id}")
            return

        resp_data = response.json()
        if resp_data is None:
            self.logger.error(f"No data received in the response for user ID: {self.id}")
            return

        data = resp_data.get("data", {})
        self.data = self._reconstruct_data(data)
        self.logger.debug(f"User data retrieved for ID: {self.id}")

    except Exception as e:
        self.logger.error(f"An error occurred while retrieving data for user ID: {self.id}, {str(e)}")

update(data)

Met à jour la ressource utilisateur représentée par cette instance.

Paramètres :

Nom Type Description DĂ©faut
data dict

Les données mises à jour pour la ressource utilisateur.

requis

Retourne :

Type Description
Optional[Response]

Objet de réponse de la demande de mise à jour, ou Aucun si la mise à jour échoue.

Code source dans hub_sdk/modules/users.py
def update(self, data: dict) -> Optional[Response]:
    """
    Update the user resource represented by this instance.

    Args:
        data (dict): The updated data for the user resource.

    Returns:
        (Optional[Response]): Response object from the update request, or None if update fails
    """
    return super().update(self.id, data)