from .base import Lamp TYPENAME_DUMMY = "Dummy" TYPENAME_XENON = "Xenon" try: from .impl.sr830 import SR830 except ImportError: pass from .impl.dummy import DummyLamp def list_devices() -> dict[str,list[str]]: devices = { TYPENAME_DUMMY: ["Dummy Lamp"], TYPENAME_XENON: ["Xenon"] } try: from .impl.daq import ShutterDAQ devices[TYPENAME_XENON] = SR830.enumerate_devices() except ImportError: pass return devices def connect_device(type_name: str, device_name: str) -> Lamp: if type_name == TYPENAME_DUMMY: return DummyLamp() elif type_name == TYPENAME_XENON: try: from .impl.xenon import Xenon return Xenon() except ImportError as e: raise ValueError(f"Xenon not available: {e}") raise ValueError(f"Unknown device type {type_name}")