Source code for rics.translation.offline._magic_dict

from typing import Any, Iterator, Mapping, Optional

from rics.translation.offline.types import TranslatedIds
from rics.translation.types import IdType


[docs]class MagicDict(Mapping[IdType, str]): """Immutable mapping for translated IDs. If `default_value` is given, it is used as the default answer for any calls to `__getitem__` where the key is not in `translated_ids`. Args: real_translations: A dict holding real translations. default_value: A string with exactly one or zero placeholders. """ def __init__( self, real_translations: TranslatedIds, default_value: str = None, ) -> None: self._real: TranslatedIds = real_translations self._default = default_value @property def default_value(self) -> Optional[str]: """Return the default string value to return for unknown keys, if any.""" return self._default def __getitem__(self, key: IdType) -> str: if key in self._real or self._default is None: return self._real[key] return self._default.format(key) def __contains__(self, idx: Any) -> bool: return self._default is not None or idx in self._real # pragma: no cover def __len__(self) -> int: return len(self._real) # pragma: no cover def __iter__(self) -> Iterator[IdType]: return iter(self._real) # pragma: no cover def __repr__(self) -> str: return repr(self._real) # pragma: no cover