"""Which rows of sweep_full.json changed when the baselines moved to the library? Only 'chandrupatla' and 'brent' may change: every configuration of ours and every other baseline is deterministic and untouched by the switch, so any other difference is a regression, not a consequence. python -u diff_sweeps.py OLD.json NEW.json """ from __future__ import annotations import json import sys def main(old_path, new_path): old = {r["label"]: r for r in json.load(open(old_path, encoding="utf8"))} new = {r["label"]: r for r in json.load(open(new_path, encoding="utf8"))} print(f"rows: old {len(old)}, new {len(new)}; only in old: {sorted(set(old) - set(new))}" f"; only in new: {sorted(set(new) - set(old))}") changed = [] for lbl in sorted(set(old) & set(new)): for s in ("APS", "CHA"): if old[lbl][s]["per"] != new[lbl][s]["per"]: changed.append((lbl, s, old[lbl][s]["total"], new[lbl][s]["total"], old[lbl][s]["solved"], new[lbl][s]["solved"], old[lbl][s]["over"], new[lbl][s]["over"])) for c in changed: print(f" CHANGED {c[0]:<14} {c[1]}: total {c[2]} -> {c[3]}, solved {c[4]} -> {c[5]}, " f"over2x {c[6]} -> {c[7]}") unexpected = [c for c in changed if c[0] not in ("chandrupatla", "brent")] print(f"unexpected changes: {len(unexpected)}") return changed, unexpected if __name__ == "__main__": main(sys.argv[1], sys.argv[2])