Source code for hugedict.chained_mapping

from itertools import chain
from typing import Iterator, Mapping

from hugedict.types import K, V


[docs]class ChainedMapping(Mapping[K, V]): def __init__(self, mapping1: Mapping[K, V], mapping2: Mapping[K, V]) -> None: self.mapping1 = mapping1 self.mapping2 = mapping2 def __getitem__(self, key: K) -> V: if key in self.mapping1: return self.mapping1[key] return self.mapping2[key] def __iter__(self) -> Iterator[K]: return chain(iter(self.mapping1), iter(self.mapping2))
[docs] def values(self) -> Iterator[V]: return chain(self.mapping1.values(), self.mapping2.values())
def __len__(self): return len(self.mapping1) + len(self.mapping2) def __contains__(self, key): if key in self.mapping1: return True return key in self.mapping2
[docs] def get(self, key: K, default=None): if key in self.mapping1: return self.mapping1[key] return self.mapping2.get(key, default)