#!/usr/bin/env python3 from __future__ import annotations import argparse import json import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parent)) from evaluate_chat_gate import score def main() -> None: parser = argparse.ArgumentParser() parser.add_argument("--input", type=Path, required=True) parser.add_argument("--output", type=Path, required=True) args = parser.parse_args() report = json.loads(args.input.read_text()) for row in report["results"]: row["passed"], row["failures"] = score(row, row["completion"]) for language, summary in report["by_language"].items(): rows = [row for row in report["results"] if row["language"] == language] summary["passed"] = sum(row["passed"] for row in rows) summary["pass_rate"] = summary["passed"] / summary["total"] report["passed"] = sum(row["passed"] for row in report["results"]) report["pass_rate"] = report["passed"] / report["total"] report["gate_passed"] = report["pass_rate"] >= report["gate_threshold"] report["rescored_from"] = str(args.input) args.output.write_text(json.dumps(report, ensure_ascii=False, indent=2)) print(json.dumps({key: value for key, value in report.items() if key != "results"}, ensure_ascii=False, indent=2)) if __name__ == "__main__": main()