"""Variant registry. `load("p1_surgical")` returns that folder's TeacherVariant instance; `available()` lists the folders. No variant name is hardcoded anywhere — a folder with a utils.py exporting `VARIANT` is automatically discoverable.""" import importlib.util import importlib # noqa: F401 (original re-exported both) import os import sys from agents.variants.base import TeacherVariant # noqa: F401 (re-exported for convenience) _DIR = os.path.dirname(__file__) def available(): """Variant folder names (any subdir with a utils.py).""" return sorted( d for d in os.listdir(_DIR) if os.path.exists(os.path.join(_DIR, d, "utils.py")) ) def load(name): """Import agents/variants//utils.py and return its VARIANT() instance.""" path = os.path.join(_DIR, name, "utils.py") if not os.path.exists(path): raise ValueError(f"unknown variant {name}; available: {available()}") spec = importlib.util.spec_from_file_location(f"agents.variants.{name}.utils", path) mod = importlib.util.module_from_spec(spec) sys.modules[spec.name] = mod spec.loader.exec_module(mod) return mod.VARIANT()