import importlib.util import sys import inspect from pyamaha import Device, System, Zone SENARIOS = [] class Senario: activate = [] deactivate = [] @classmethod def name(cls): if getattr(cls, 'NAME', None): return cls.NAME else: return cls.__name__.lower() def load_from_file(file_path: str): module_name = 'senarios' spec = importlib.util.spec_from_file_location(module_name, file_path) module = importlib.util.module_from_spec(spec) sys.modules[module_name] = module spec.loader.exec_module(module) for name, obj in inspect.getmembers(module): if inspect.isclass(obj) and issubclass(obj, Senario) and obj != Senario: SENARIOS.append(obj)