Перейти к содержимому

Ссылка для hub_sdk/modules/teams.py

Примечание

Этот файл доступен по адресу https://github.com/ultralytics/hub-sdk/blob/main/hub_sdk/modules/teams .py. Если ты заметил проблему, пожалуйста, помоги исправить ее, отправив Pull Request 🛠️. Спасибо 🙏!



hub_sdk.modules.teams.Teams

Базы: CRUDClient

Класс, представляющий клиента для взаимодействия с командами посредством CRUD-операций. Этот класс расширяет класс CRUDClient класс и предоставляет специфические методы для работы с Teams.

Атрибуты:

Имя Тип Описание
id (str, None)

Уникальный идентификатор команды, если таковой имеется.

data dict

Словарь для хранения данных о команде.

Примечание

Атрибут 'id' устанавливается при инициализации и может использоваться для уникальной идентификации команды. Атрибут 'data' используется для хранения данных о команде, получаемых из API.

Исходный код в hub_sdk/modules/teams.py
class Teams(CRUDClient):
    """
    A class representing a client for interacting with Teams through CRUD operations. This class extends the CRUDClient
    class and provides specific methods for working with Teams.

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

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

    def __init__(self, team_id: Optional[str] = None, headers: Optional[Dict[str, Any]] = None):
        """
        Initialize a Teams instance.

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

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

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

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

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

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

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

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

    def create_team(self, team_data) -> None:
        """
        Creates a new team with the provided data and sets the team ID for the current instance.

        Args:
            team_data (dict): A dictionary containing the data for creating the team.

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

    def delete(self, hard=False) -> Optional[Response]:
        """
        Delete the team 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 team might be marked as deleted but retained in the system.
            In a hard delete, the team is permanently removed from the system.

        Returns:
            (Optional[Response]): The response from the delete request, or None if it fails.
        """
        return super().delete(self.id, hard)

    def update(self, data) -> Optional[Response]:
        """
        Update the team resource represented by this instance.

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

        Returns:
            (Optional[Response]): The response from the update request, or Noe if it fails.
        """
        return super().update(self.id, data)

__init__(team_id=None, headers=None)

Инициализируй экземпляр команды Teams.

Параметры:

Имя Тип Описание По умолчанию
team_id str

Уникальный идентификатор команды.

None
headers dict

Словарь HTTP-заголовков, которые должны быть включены в запросы к API.

None
Исходный код в hub_sdk/modules/teams.py
def __init__(self, team_id: Optional[str] = None, headers: Optional[Dict[str, Any]] = None):
    """
    Initialize a Teams instance.

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

create_team(team_data)

Создает новую команду с предоставленными данными и устанавливает идентификатор команды для текущего экземпляра.

Параметры:

Имя Тип Описание По умолчанию
team_data dict

Словарь, содержащий данные для создания команды.

требуется

Возвращается:

Тип Описание
None

Метод не возвращает значение.

Исходный код в hub_sdk/modules/teams.py
def create_team(self, team_data) -> None:
    """
    Creates a new team with the provided data and sets the team ID for the current instance.

    Args:
        team_data (dict): A dictionary containing the data for creating the team.

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

delete(hard=False)

Удали ресурс команды, представленный этим экземпляром.

Параметры:

Имя Тип Описание По умолчанию
hard bool

Если True, выполни жесткое (постоянное) удаление.

False
Примечание

Параметр 'hard' определяет, выполнять ли мягкое удаление (по умолчанию) или жесткое. При мягком удалении команда может быть помечена как удаленная, но сохраниться в системе. При жестком удалении команда навсегда удаляется из системы.

Возвращается:

Тип Описание
Optional[Response]

Ответ от запроса на удаление или None, если он не сработал.

Исходный код в hub_sdk/modules/teams.py
def delete(self, hard=False) -> Optional[Response]:
    """
    Delete the team 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 team might be marked as deleted but retained in the system.
        In a hard delete, the team is permanently removed from the system.

    Returns:
        (Optional[Response]): The response from the delete request, or None if it fails.
    """
    return super().delete(self.id, hard)

get_data()

Получает данные для текущего экземпляра команды.

Если был задан правильный идентификатор команды, он отправляет запрос на получение данных о команде и сохраняет их в экземпляре. Если же ID команды не задан, то в лог записывается сообщение об ошибке.

Возвращается:

Тип Описание
None

Метод не возвращает значение.

Исходный код в hub_sdk/modules/teams.py
def get_data(self) -> None:
    """
    Retrieves data for the current team instance.

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

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

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

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

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

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

update(data)

Обнови ресурс команды, представленный этим экземпляром.

Параметры:

Имя Тип Описание По умолчанию
data dict

Обновленные данные для командного ресурса.

требуется

Возвращается:

Тип Описание
Optional[Response]

Ответ на запрос обновления или Noe, если он не сработал.

Исходный код в hub_sdk/modules/teams.py
def update(self, data) -> Optional[Response]:
    """
    Update the team resource represented by this instance.

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

    Returns:
        (Optional[Response]): The response from the update request, or Noe if it fails.
    """
    return super().update(self.id, data)



hub_sdk.modules.teams.TeamList

Базы: PaginatedList

Исходный код в hub_sdk/modules/teams.py
class TeamList(PaginatedList):
    def __init__(self, page_size=None, public=None, headers=None):
        """
        Initialize a TeamList 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 = "datasets"
        if public:
            base_endpoint = f"public/{base_endpoint}"
        super().__init__(base_endpoint, "team", page_size, headers)

__init__(page_size=None, public=None, headers=None)

Инициализируй экземпляр TeamList.

Параметры:

Имя Тип Описание По умолчанию
page_size int

Количество элементов, которые нужно запросить на одной странице.

None
public bool

Должны ли предметы быть общедоступными.

None
headers dict

Заголовки, которые нужно включать в запросы к API.

None
Исходный код в hub_sdk/modules/teams.py
def __init__(self, page_size=None, public=None, headers=None):
    """
    Initialize a TeamList 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 = "datasets"
    if public:
        base_endpoint = f"public/{base_endpoint}"
    super().__init__(base_endpoint, "team", page_size, headers)