Source code for supervisely.api.volume.volume_tag_api

# coding: utf-8
from typing import Optional, Union

from supervisely.annotation.tag_meta import TagMeta
from supervisely.api.entity_annotation.tag_api import TagApi
from supervisely.api.module_api import ApiField
from supervisely.video_annotation.key_id_map import KeyIdMap


[docs]class VolumeTagApi(TagApi): """ :class:`VolumeTag<supervisely.volume_annotation.volume_tag.VolumeTag>` for a single volume. :class:`VolumeTagApi<VolumeTagApi>` object is immutable. """ _entity_id_field = ApiField.ENTITY_ID _method_bulk_add = "volumes.tags.bulk.add"
[docs] def remove_from_volume(self, tag_id: int): """ Remove tag from volume. :param tag_id: VolumeTag ID in Supervisely. :type tag_id: int :return: None :rtype: :class:`NoneType` :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() api.volume.tag.remove_from_volume(volume_tag_id) """ self._api.post("volumes.tags.remove", {ApiField.ID: tag_id})
[docs] def update_value(self, tag_id: int, tag_value: Union[str, int]): """ Update VolumeTag value. :param tag_id: VolumeTag ID in Supervisely. :type tag_id: int :param tag_value: New VolumeTag value. :type tag_value: str or int :return: None :rtype: :class:`NoneType` :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() api.volume.tag.update_value(volume_tag_id, 'new_tag_value') """ self._api.post( "volumes.tags.update-value", {ApiField.ID: tag_id, ApiField.VALUE: tag_value}, )
[docs] def append_to_volume( self, volume_id: int, tag_id: int, value: Union[str, int, None] = None, tag_meta: Optional[TagMeta] = None, ) -> int: """ Add tag to volume. :param volume_id: Volume ID in Supervisely. :type volume_id: int :param tag_id: Tag ID in Supervisely. :type tag_id: int :param tag_value: VolumeTag value. :type tag_value: str or int or None, optional :param tag_meta: TagMeta object. :type tag_meta: TagMeta, optional :return: VolumeTag ID. :rtype: int :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() volume_id = 19402023 tag_id = 19402023 tag_value = 'tag_value' tag_meta = api.tag.get_info_by_id(tag_id).meta id = api.volume.tag.append_to_volume(volume_id, tag_id, tag_value, tag_meta) """ data = { ApiField.ENTITY_ID: volume_id, ApiField.TAG_ID: tag_id, } if tag_meta: if not tag_meta.is_valid_value(value): raise ValueError("Tag {} can not have value {}".format(tag_meta.name, value)) if value is not None: data[ApiField.VALUE] = value response = self._api.post("volumes.tags.add", data) return response.json().get(ApiField.ID)