Source code for speasy.core.inventory

from typing import Dict, Callable
from .indexes import ParameterIndex, DatasetIndex, TimetableIndex, ComponentIndex, CatalogIndex, SpeasyIndex


[docs] class ProviderInventory: parameters: Dict[str, ParameterIndex] datasets: Dict[str, DatasetIndex] missions: Dict[str, SpeasyIndex] timetables: Dict[str, TimetableIndex] catalogs: Dict[str, CatalogIndex] components: Dict[str, ComponentIndex] _type_lookup: Dict[type, Callable] def __init__(self): self.parameters = {} self.datasets = {} self.instruments = {} self.observatories = {} self.missions = {} self.timetables = {} self.catalogs = {} self.components = {} self._type_lookup = { ParameterIndex: lambda node: self.parameters.__setitem__(node.spz_uid(), node), DatasetIndex: lambda node: self.datasets.__setitem__(node.spz_uid(), node), TimetableIndex: lambda node: self.timetables.__setitem__(node.spz_uid(), node), ComponentIndex: lambda node: self.components.__setitem__(node.spz_uid(), node), CatalogIndex: lambda node: self.catalogs.__setitem__(node.spz_uid(), node), }
[docs] def clear(self): self.parameters.clear() self.datasets.clear() self.instruments.clear() self.observatories.clear() self.missions.clear() self.timetables.clear() self.catalogs.clear() self.components.clear()
def _register_nodes(self, node: SpeasyIndex): if isinstance(node, SpeasyIndex): for child in node.__dict__.values(): self._type_lookup.get(type(child), lambda _: None)(child) self._register_nodes(child)
[docs] def update(self, root: SpeasyIndex): self._register_nodes(root)
[docs] class FlatInventories: def __init__(self): pass