GitHub Action
Clean deployment without binary files
f884e6e
"""
Wrapper for basic evaluation runner to support HF Spaces deployment.
Attempts to load the real `evaluation/run_evaluation.py` from common repository
locations and re-export `run_eval` and `citation_matches`. Falls back to
stubs that raise ImportError with clear instructions.
"""
import importlib.util
import os
from typing import Optional
def _load_from_candidate(candidate_dir: str) -> Optional[object]:
path = os.path.join(candidate_dir, "run_evaluation.py")
if not os.path.exists(path):
return None
spec = importlib.util.spec_from_file_location("run_evaluation_impl", path)
if spec is None or spec.loader is None:
return None
mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(mod)
return mod
_candidates = [
os.path.join(os.path.dirname(__file__), "..", "..", "evaluation"),
os.path.join(os.path.dirname(__file__), "..", "evaluation"),
os.path.join(os.getcwd(), "evaluation"),
]
_impl = None
for c in _candidates:
mod = _load_from_candidate(os.path.abspath(c))
if mod:
_impl = mod
break
if _impl is not None:
run_eval = getattr(_impl, "run_eval", None)
citation_matches = getattr(_impl, "citation_matches", None)
if run_eval is None:
def run_eval(*args, **kwargs):
raise ImportError("run_eval not found in loaded run_evaluation implementation")
if citation_matches is None:
def citation_matches(*args, **kwargs):
raise ImportError("citation_matches not found in loaded run_evaluation implementation")
else:
def run_eval(*args, **kwargs):
raise ImportError(
"run_evaluation implementation not found in deployment. "
"Ensure the repository 'evaluation/run_evaluation.py' is present in the container."
)
def citation_matches(*args, **kwargs):
raise ImportError("citation_matches not found because run_evaluation implementation is missing.")