agentic-rl-main / config /loader.py
Jack04810's picture
Add files using upload-large-folder tool
36d0b76 verified
Raw
History Blame Contribute Delete
2.38 kB
import importlib
import importlib.util
import os
from typing import Any
_CONFIG_ALIASES: dict[str, str] = {
"norm": "config.config",
"trimode": "config.config_trimode",
"trimode_antidegen": "config.config_trimode_antidegen",
"rlsd": "config.config_rlsd_chartqa",
"rlsd_chartqa": "config.config_rlsd_chartqa",
"opd_7b": "config.config_opd_7b_chartqa",
"opd_7b_chartqa": "config.config_opd_7b_chartqa",
"llavacot": "config.config_llavacot",
"low": "config.config_low",
"aok": "config.config_aok",
"change": "config.config_change",
"7b": "config.config_7B",
"llm": "config.config_llm",
}
def _resolve_config_path(config_arg: str) -> str:
if os.path.isfile(config_arg):
return os.path.abspath(config_arg)
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
candidate = os.path.join(project_root, config_arg)
if os.path.isfile(candidate):
return os.path.abspath(candidate)
raise FileNotFoundError(f"Config file not found: {config_arg}")
def load_config(config_arg: str) -> dict[str, Any]:
"""
Load CONFIG from a Python config file path or shorthand alias.
Examples:
load_config("config/config.py")
load_config("config/config_trimode.py")
load_config("norm")
load_config("trimode")
"""
if config_arg.endswith(".py"):
path = _resolve_config_path(config_arg)
module_name = f"_dyme_runtime_config_{abs(hash(path)) % 10 ** 8}"
spec = importlib.util.spec_from_file_location(module_name, path)
if spec is None or spec.loader is None:
raise ImportError(f"Cannot load config module from {path}")
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
if not hasattr(module, "CONFIG"):
raise ValueError(f"{path} must define a CONFIG dict")
return module.CONFIG
module_path = _CONFIG_ALIASES.get(config_arg)
if module_path is None:
raise ValueError(
f"Unknown config alias '{config_arg}'. "
f"Use a .py path (e.g. config/config.py) or one of: {', '.join(sorted(_CONFIG_ALIASES))}"
)
module = importlib.import_module(module_path)
if not hasattr(module, "CONFIG"):
raise ValueError(f"{module_path} must define a CONFIG dict")
return module.CONFIG