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

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

from typing import Any, Dict

import pyarrow as pa

from datumaro.components.dataset_base import DatasetItem
from datumaro.plugins.data_formats.datumaro_binary.mapper.annotation import AnnotationListMapper
from datumaro.plugins.data_formats.datumaro_binary.mapper.common import DictMapper, Mapper

from .media import MediaMapper


[docs] class DatasetItemMapper(Mapper):
[docs] @staticmethod def forward(obj: DatasetItem, **options) -> Dict[str, Any]: return { "id": obj.id, "subset": obj.subset, "media": MediaMapper.forward(obj.media, **options.get("media", {})), "annotations": AnnotationListMapper.forward(obj.annotations), "attributes": DictMapper.forward(obj.attributes), }
[docs] @staticmethod def backward(idx: int, table: pa.Table, table_path: str) -> DatasetItem: return DatasetItem( id=table.column("id")[idx].as_py(), subset=table.column("subset")[idx].as_py(), media=MediaMapper.backward( media_struct=table.column("media")[idx], idx=idx, table=table, table_path=table_path, ), annotations=AnnotationListMapper.backward(table.column("annotations")[idx].as_py())[0], attributes=DictMapper.backward(table.column("attributes")[idx].as_py())[0], )