"""Unzip the CLICS4 CLDF tables and run the registered analysis (code/colex.py) unchanged,
then list, as a post hoc description, the varieties behind each HEAVY-target colexification.
Writes results/R1.json (registered) and results/R2.json (descriptive)."""
import csv
import json
import os
import subprocess
import sys
import tempfile
import zipfile

sys.path.insert(0, "code")
import colex  # noqa: E402

tmp = tempfile.mkdtemp()
for name in ("forms", "concepts"):
    with zipfile.ZipFile(f"data/clics4/{name}.csv.zip") as z:
        z.extractall(tmp)
forms = os.path.join(tmp, "forms.csv")
langs = "data/clics4/languages.csv"
os.makedirs("results", exist_ok=True)
subprocess.run([sys.executable, "code/colex.py", forms, langs, "results/R1.json"], check=True, stdout=subprocess.DEVNULL)
lex, fam = colex.load(forms, langs)
meta = {r["ID"]: r for r in csv.DictReader(open(langs, encoding="utf-8"))}
out = {}
for t in colex.TARGETS:
    hits = sorted({(meta[v]["Family_Name"] or "isolate", meta[v]["Name"], " / ".join(sorted(c["HEAVY"] & c[t])))
                   for v, c in lex.items() if "HEAVY" in c and t in c and c["HEAVY"] & c[t]})
    out[t] = {"varieties": len(hits), "families": sorted({h[0] for h in hits}),
              "examples": [{"family": f, "variety": n, "form": w} for f, n, w in hits]}
with open("results/R2.json", "w") as fh:
    json.dump(out, fh, indent=2, ensure_ascii=False)
    fh.write("\n")
