from collections.abc import Sequence
from typing import Any
from id_translation.offline import TranslationMap
from id_translation.types import IdType, NameType, SourceType
from .._data_structure_io import DataStructureIO
[docs]
class SetIO(DataStructureIO[set[IdType], NameType, SourceType, IdType]):
"""IO implementation for ``set`` types."""
priority = 1010
[docs]
@classmethod
def handles_type(cls, arg: Any) -> bool:
return isinstance(arg, set)
[docs]
@classmethod
def insert(
cls,
translatable: set[IdType],
names: list[NameType],
tmap: TranslationMap[NameType, SourceType, IdType],
copy: bool,
) -> set[str] | None:
magic_dict = tmap[names[0]]
translated = {magic_dict[e] for e in translatable}
if copy:
return translated
translatable.clear()
translatable.update(translated) # type: ignore[arg-type]
return None