redrob-ranker / scripts /setup_artifacts.py
ashokbugude
Cursor
Full HF Space: bundled candidates.jsonl, live rank.py, optional upload
b91193c
Raw History Blame Contribute Delete
2.53 kB
#!/usr/bin/env python3
"""Bootstrap artifacts directory with challenge reference documents."""
from __future__ import annotations
import argparse
import logging
import shutil
import sys
from pathlib import Path
PROJECT_ROOT = Path(__file__).resolve().parent.parent
sys.path.insert(0, str(PROJECT_ROOT))
from app.config import get_settings # noqa: E402
from app.logging_setup import configure_logging # noqa: E402
logger = logging.getLogger(__name__)
# Source files inside challenge/ → artifacts/
DOC_MAPPINGS: dict[str, str] = {
"job_description.txt": "challenge/_extracted/job_description.txt",
"submission_spec.txt": "challenge/_extracted/submission_spec.txt",
"redrob_signals_doc.txt": "challenge/_extracted/redrob_signals_doc.txt",
"README_challenge.txt": "challenge/_extracted/README.txt",
}
def copy_reference_docs(settings, force: bool = False) -> list[Path]:
"""Copy challenge reference documents into artifacts/."""
settings.ensure_artifacts_dir()
copied: list[Path] = []
for dest_name, src_rel in DOC_MAPPINGS.items():
src = PROJECT_ROOT / src_rel
dest = settings.artifacts_dir / dest_name
if not src.exists():
logger.warning("Source not found, skipping: %s", src)
continue
if dest.exists() and not force:
logger.info("Already exists, skipping: %s", dest.name)
copied.append(dest)
continue
shutil.copy2(src, dest)
logger.info("Copied %s -> %s", src.name, dest)
copied.append(dest)
return copied
def write_gitkeep(artifacts_dir: Path) -> None:
"""Ensure artifacts/.gitkeep exists for empty-dir tracking."""
gitkeep = artifacts_dir / ".gitkeep"
if not gitkeep.exists():
gitkeep.touch()
def main() -> int:
parser = argparse.ArgumentParser(description="Bootstrap artifacts directory.")
parser.add_argument(
"--force",
action="store_true",
help="Overwrite existing artifact documents.",
)
args = parser.parse_args()
settings = get_settings()
configure_logging(settings.log_level)
write_gitkeep(settings.artifacts_dir)
copied = copy_reference_docs(settings, force=args.force)
if not copied:
logger.error("No documents copied. Run from project root after extracting challenge docs.")
return 1
logger.info("Artifacts ready at %s (%d files)", settings.artifacts_dir, len(copied))
return 0
if __name__ == "__main__":
raise SystemExit(main())