"""Generate Supplementary Table 1 from NPA data."""
from __future__ import annotations

import csv
import json
import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).parent.parent / "src"))


def make_table1(data_dir: Path, out_dir: Path):
    json_path = data_dir / "tilted_chsh_npa_level2.json"
    with open(json_path, "r") as f:
        manifest = json.load(f)

    out_dir.mkdir(parents=True, exist_ok=True)
    csv_path = out_dir / "supplementary_table1.csv"

    with open(csv_path, "w", newline="") as f:
        writer = csv.writer(f)
        writer.writerow([
            "alpha", "s", "primal_obj", "dual_obj", "gap",
            "max_residual", "min_eig_Gamma", "status", "certified"
        ])
        for alpha_str, records in manifest["data"].items():
            for r in records:
                writer.writerow([
                    r["alpha"],
                    r["authorized_score"],
                    r["collusive_score"],
                    r.get("dual_objective"),
                    r.get("primal_dual_gap"),
                    r.get("max_affine_residual"),
                    r.get("min_eig_Gamma"),
                    r["status"],
                    r.get("certified", False),
                ])
    print(f"Saved table to {csv_path}")


if __name__ == "__main__":
    data_dir = Path(__file__).parent.parent / "data" / "raw"
    out_dir = Path(__file__).parent.parent / "data" / "processed"
    make_table1(data_dir, out_dir)
