Source code for datumaro.plugins.data_formats.datumaro_binary.mapper.dataset_item

# Copyright (C) 2023 Intel Corporation
#
# SPDX-License-Identifier: MIT

from typing import Dict, Optional, Tuple

from datumaro.components.dataset_base import DatasetItem
from datumaro.components.media import MediaType
from datumaro.plugins.data_formats.datumaro_binary.mapper.annotation import AnnotationListMapper

from .common import DictMapper, Mapper, StringMapper
from .media import MediaMapper


[docs] class DatasetItemMapper(Mapper):
[docs] @staticmethod def forward(obj: DatasetItem) -> bytes: bytes_arr = bytearray() bytes_arr.extend(StringMapper.forward(obj.id)) bytes_arr.extend(StringMapper.forward(obj.subset)) bytes_arr.extend(MediaMapper.forward(obj.media)) bytes_arr.extend(DictMapper.forward(obj.attributes)) bytes_arr.extend(AnnotationListMapper.forward(obj.annotations)) return bytes(bytes_arr)
[docs] @staticmethod def backward( _bytes: bytes, offset: int = 0, media_path_prefix: Optional[Dict[MediaType, str]] = None ) -> Tuple[DatasetItem, int]: id, offset = StringMapper.backward(_bytes, offset) subset, offset = StringMapper.backward(_bytes, offset) media, offset = MediaMapper.backward(_bytes, offset, media_path_prefix) attributes, offset = DictMapper.backward(_bytes, offset) annotations, offset = AnnotationListMapper.backward(_bytes, offset) return ( DatasetItem( id=id, subset=subset, media=media, attributes=attributes, annotations=annotations ), offset, )