Source code for m3resp.presets.registry

"""Name -> `Preset` class registry."""

from __future__ import annotations

from m3resp.core.exceptions import UnknownPresetError
from m3resp.presets.base import Preset
from m3resp.presets.eit import EITPreset
from m3resp.presets.emg import EMGPreset
from m3resp.presets.multimodal import MultimodalPreset

PRESET_REGISTRY: dict[str, type[Preset]] = {}


[docs] def register_preset(name: str, preset_cls: type[Preset]) -> None: """Store preset_cls under name, replacing any existing registration.""" PRESET_REGISTRY[name] = preset_cls
[docs] def get_preset(name: str) -> type[Preset]: """Return the Preset class registered under name. Raises UnknownPresetError if name is unregistered, listing available names. """ try: return PRESET_REGISTRY[name] except KeyError as exc: available = ", ".join(sorted(PRESET_REGISTRY)) or "(none registered)" raise UnknownPresetError( f"Unknown preset '{name}'. Available presets: {available}." ) from exc
[docs] def available_presets() -> list[str]: """Return the names of all registered presets, sorted.""" return sorted(PRESET_REGISTRY)
register_preset("eit", EITPreset) register_preset("emg", EMGPreset) register_preset("multimodal", MultimodalPreset)