sky2 / skydiscover /benchmarks /resolution.py
JustinTX's picture
Add files using upload-large-folder tool
af83196 verified
"""Benchmark resolution helpers."""
import importlib
import os
import sys
import tempfile
from dataclasses import dataclass, field
from pathlib import Path
from typing import Any, Dict
@dataclass
class BenchmarkResolution:
"""Resolved benchmark assets and evaluator-scoped configuration."""
initial_program_path: str
evaluator_path: str
evaluator_env_vars: Dict[str, str] = field(default_factory=dict)
def resolve_benchmark_problem(benchmark_config: Any) -> BenchmarkResolution:
"""Load benchmark problem from external dataset using the configured resolver."""
resolver_path = getattr(benchmark_config, "resolver", None)
if not resolver_path:
raise ValueError("BenchmarkConfig.resolver must be set to use benchmark loading")
cwd = os.getcwd()
if cwd not in sys.path:
sys.path.insert(0, cwd)
resolver_module = importlib.import_module(resolver_path)
resolver = resolver_module.resolver
benchmark_name = getattr(benchmark_config, "name", None) or "benchmark"
output_dir = Path(tempfile.mkdtemp(prefix=f"skydiscover_{benchmark_name}_"))
params = getattr(benchmark_config, "params", {})
return resolver.resolve(config=params, output_dir=output_dir)