Spaces:
Sleeping
Sleeping
import importlib | |
import pkgutil | |
from pathlib import Path | |
from .base import MelodyDatasetHandler | |
_registry = {} | |
for _, module_name, _ in pkgutil.iter_modules([str(Path(__file__).parent)]): | |
if module_name in ("__init__", "base"): | |
continue | |
module = importlib.import_module(f"{__name__}.{module_name}") | |
for attr_name in dir(module): | |
attr = getattr(module, attr_name) | |
if ( | |
isinstance(attr, type) | |
and issubclass(attr, MelodyDatasetHandler) | |
and attr is not MelodyDatasetHandler | |
): | |
_registry[attr.name] = attr # 注册 class 本身 | |
def get_melody_handler(name: str) -> type[MelodyDatasetHandler]: | |
if name not in _registry: | |
raise ValueError(f"Melody source '{name}' not found") | |
return _registry[name] | |