#!/usr/bin/env python3 """Assemble release/ : PDF, sources LaTeX, données, figures, scripts, classeurs, corrigés, rapport de validation.""" import shutil, pathlib, subprocess, datetime, zipfile ROOT = pathlib.Path(__file__).resolve().parents[1] REL = ROOT / "release"; REL.mkdir(exist_ok=True) stamp = datetime.date.today().isoformat() z = REL / f"traite-evaluation-qc-sources-{stamp}.zip" with zipfile.ZipFile(z, "w", zipfile.ZIP_DEFLATED) as zf: for d in ["manuscript", "styles", "assets", "data", "analysis", "spreadsheets", "exercises", "solutions", "references", "sources", "verification", "tools"]: for p in (ROOT / d).rglob("*"): if p.is_file() and "__pycache__" not in p.parts and not p.name.startswith("."): zf.write(p, p.relative_to(ROOT)) for f in ["CLAUDE.md", "CONVENTIONS.md", "README.md", "Makefile", "latexmkrc"]: if (ROOT / f).exists(): zf.write(ROOT / f, f) print("archive :", z, f"{z.stat().st_size/1e6:.1f} Mo")