Source code for supervisely.api.agent_api
# coding: utf-8
"""api for working with agent"""
from __future__ import annotations
from typing import NamedTuple, Optional, Dict, List
from enum import Enum
from supervisely.api.module_api import ApiField, ModuleApi, ModuleWithStatus
class AgentNotFound(Exception):
"""class AgentNotFound"""
pass
class AgentNotRunning(Exception):
"""class AgentNotRunning"""
pass
[docs]class AgentApi(ModuleApi, ModuleWithStatus):
"""
API for working with agent. :class:`AgentApi<AgentApi>` object is immutable.
:param api: API connection to the server
:type api: Api
:Usage example:
.. code-block:: python
import os
from dotenv import load_dotenv
import supervisely as sly
# Load secrets and create API object from .env file (recommended)
# Learn more here: https://developer.supervisely.com/getting-started/basics-of-authentication
if sly.is_development():
load_dotenv(os.path.expanduser("~/supervisely.env"))
api = sly.Api.from_env()
# Pass values into the API constructor (optional, not recommended)
# api = sly.Api(server_address="https://app.supervise.ly", token="4r47N...xaTatb")
team_id = 8
agents = api.agent.get_list(team_id)
"""
[docs] class Status(Enum):
"""Agent status."""
WAITING = "waiting"
""""""
RUNNING = "running"
""""""
[docs] @staticmethod
def info_sequence():
"""
NamedTuple AgentInfo information about Agent.
:Example:
.. code-block:: python
AgentInfo("some info")
"""
return [
ApiField.ID,
ApiField.NAME,
ApiField.TOKEN,
ApiField.STATUS,
ApiField.USER_ID,
ApiField.TEAM_ID,
ApiField.CAPABILITIES,
ApiField.CREATED_AT,
ApiField.UPDATED_AT,
]
[docs] @staticmethod
def info_tuple_name():
"""
NamedTuple name - **AgentInfo**.
"""
return "AgentInfo"
def __init__(self, api):
ModuleApi.__init__(self, api)
ModuleWithStatus.__init__(self)
[docs] def get_list(
self, team_id: int, filters: Optional[List[Dict[str, str]]] = None
) -> List[NamedTuple]:
"""
List of all agents in the given Team.
:param team_id: Team ID in Supervisely.
:type team_id: int
:param filters: List of params to sort output Agents.
:type filters: List[dict], optional
:return: List of Agents with information. See :class:`info_sequence<info_sequence>`
:rtype: :class:`List[NamedTuple]`
:Usage example:
.. code-block:: python
import supervisely as sly
os.environ['SERVER_ADDRESS'] = 'https://app.supervise.ly'
os.environ['API_TOKEN'] = 'Your Supervisely API Token'
api = sly.Api.from_env()
team_id = 16087
agents = api.agent.get_list(team_id)
filter_agents = api.agent.get_list(team_id, filters=[{ 'field': 'name', 'operator': '=', 'value': 'Gorgeous Chicken' }])
"""
return self.get_list_all_pages("agents.list", {"teamId": team_id, "filter": filters or []})
[docs] def get_info_by_id(self, id: int) -> NamedTuple:
"""
Get Agent information by ID.
:param id: Agent ID in Supervisely.
:type id: int
:return: Information about Agent. See :class:`info_sequence<info_sequence>`
:rtype: :class:`NamedTuple`
:Usage example:
.. code-block:: python
import supervisely as sly
os.environ['SERVER_ADDRESS'] = 'https://app.supervise.ly'
os.environ['API_TOKEN'] = 'Your Supervisely API Token'
api = sly.Api.from_env()
agent = api.agent.get_info_by_id(7)
"""
return self._get_info_by_id(id, "agents.info")
[docs] def get_status(self, id: int) -> AgentApi.Status:
"""
Status object containing status of Agent: waiting or running.
:param id: Agent ID in Supervisely.
:type id: int
:return: Agent Status
:rtype: :class:`Status<supervisely.api.agent_api.AgentApi.Status>`
:Usage example:
.. code-block:: python
import supervisely as sly
os.environ['SERVER_ADDRESS'] = 'https://app.supervise.ly'
os.environ['API_TOKEN'] = 'Your Supervisely API Token'
api = sly.Api.from_env()
agent = api.agent.get_status(7)
"""
status_str = self.get_info_by_id(id).status
return self.Status(status_str)
[docs] def raise_for_status(self, status):
"""raise_for_status"""
pass