Overslaan naar inhoud

Referentie voor hub_sdk/modules/users.py

Opmerking

Dit bestand is beschikbaar op https://github.com/ultralytics/hub-sdk/blob/main/hub_sdk/modules/users .py. Als je een probleem ziet, help het dan oplossen door een Pull Request 🛠️ bij te dragen. Bedankt 🙏!



hub_sdk.modules.users.Users

Basis: CRUDClient

Een klasse die een client voorstelt voor interactie met gebruikers via CRUD operaties. Deze klasse breidt de CRUDClient klasse en biedt specifieke methoden voor het werken met Gebruikers.

Kenmerken:

Naam Type Beschrijving
id (str, None)

De unieke identificatie van de gebruiker, indien beschikbaar.

data dict

Een woordenboek om gebruikersgegevens in op te slaan.

Opmerking

Het "id" attribuut wordt ingesteld tijdens het initialiseren en kan worden gebruikt om een gebruiker uniek te identificeren. Het "data" attribuut wordt gebruikt om gebruikersgegevens op te slaan die zijn opgehaald van de API.

Broncode in 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)

Initialiseer een gebruikersobject voor interactie met gebruikersgegevens via CRUD-bewerkingen.

Parameters:

Naam Type Beschrijving Standaard
user_id str

De unieke identificatie van de gebruiker.

None
headers dict

Een woordenboek van HTTP-headers die in API-verzoeken moeten worden opgenomen.

None
Broncode in 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)

Maakt een nieuwe gebruiker met de opgegeven gegevens en stelt de gebruikers-ID in voor de huidige instantie.

Parameters:

Naam Type Beschrijving Standaard
user_data dict

Een woordenboek met de gegevens voor het aanmaken van de gebruiker.

vereist

Retourneert:

Type Beschrijving
None

De methode retourneert geen waarde.

Broncode in 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)

Verwijder de gebruikersbron die door deze instantie wordt vertegenwoordigd.

Parameters:

Naam Type Beschrijving Standaard
hard bool

Als dit waar is, voer dan een harde verwijdering uit.

False
Opmerking

De parameter 'hard' bepaalt of een zachte verwijdering (standaard) of een harde verwijdering wordt uitgevoerd. Bij een zachte verwijdering wordt het model gemarkeerd als verwijderd, maar blijft het in het systeem staan. Bij een harde verwijdering wordt het model permanent uit het systeem verwijderd.

Retourneert:

Type Beschrijving
Optional[Response]

Antwoordobject van het verwijderverzoek, of geen als verwijderen mislukt

Broncode in 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()

Haalt gegevens op voor de huidige gebruikersinstantie.

Als er een geldige gebruikers-ID is ingesteld, wordt er een verzoek verzonden om de gebruikersgegevens op te halen en op te slaan in de instantie. Als er geen gebruikers-ID is ingesteld, wordt er een foutbericht weergegeven.

Retourneert:

Type Beschrijving
None

De methode retourneert geen waarde.

Broncode in 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)

Werk de gebruikersbron bij die wordt vertegenwoordigd door deze instantie.

Parameters:

Naam Type Beschrijving Standaard
data dict

De bijgewerkte gegevens voor de gebruikersbron.

vereist

Retourneert:

Type Beschrijving
Optional[Response]

Antwoordobject van het updateverzoek, of Geen als update mislukt

Broncode in 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)