SPB Git
2.5 KB · 24 lines python
1#!/usr/bin/env python32"""Inventaire des scripts, tests, données, figures et classeurs → manuscript/appendices/_inventaire.tex (longtable) et verification/inventaire.md."""3import pathlib, re4ROOT = pathlib.Path(__file__).resolve().parents[1]5def esc(s): return s.replace("\\", "").replace("_", "\\_").replace("&", "\\&").replace("%", "\\%").replace("#", "\\#").replace("$", "\\$")6def doc(p):7    t = p.read_text(encoding="utf-8", errors="ignore")8    m = re.search(r'"""(.*?)"""', t, re.S) or re.search(r"^#\s*(.+)$", t, re.M)9    return esc(m.group(1).strip().split("\n")[0]) if m else ""10rows = []11for d, kind in [("analysis/python/traite", "module"), ("analysis/python/cases", "calcul"), ("analysis/python/figures", "figure"), ("analysis/python/tests", "test"), ("analysis/r", "R"), ("tools", "outil")]:12    for p in sorted((ROOT / d).glob("*.py")) + sorted((ROOT / d).glob("*.R")) + sorted((ROOT / d).glob("*.sh")):13        if p.name.startswith("__"): continue14        rows.append((kind, esc(str(p.relative_to(ROOT))), doc(p)[:110]))15data = [(esc(str(p.relative_to(ROOT))), f"{p.stat().st_size/1024:.0f} ko") for p in sorted((ROOT / "data/synthetic").glob("*")) if p.is_file()]16xl = [esc(str(p.relative_to(ROOT))) for p in sorted((ROOT / "spreadsheets").glob("*.xlsx"))]17nfig = len(list((ROOT / "assets/figures").rglob("*.pdf")))18tex = ["\\begin{longtable}{lp{48mm}p{62mm}}", "\\caption{Scripts du dépôt (modules, calculs, figures, tests, outils)}\\label{tab:app:scripts}\\\\", "\\toprule Type & Fichier & Rôle \\\\ \\midrule \\endfirsthead", "\\toprule Type & Fichier & Rôle \\\\ \\midrule \\endhead", "\\bottomrule \\endfoot"]19tex += [f"{k} & \\texttt{{{f}}} & {d} \\\\" for k, f, d in rows] + ["\\end{longtable}", "", "\\begin{longtable}{lr}", "\\caption{Jeux de données synthétiques}\\label{tab:app:donnees}\\\\", "\\toprule Fichier & Taille \\\\ \\midrule \\endfirsthead", "\\toprule Fichier & Taille \\\\ \\midrule \\endhead", "\\bottomrule \\endfoot"]20tex += [f"\\texttt{{{f}}} & {s} \\\\" for f, s in data] + ["\\end{longtable}", "", "\\begin{itemize}"] + [f"\\item \\texttt{{{x}}}" for x in xl] + ["\\end{itemize}", f"\\noindent Figures PDF générées : {nfig}."]21(ROOT / "manuscript/appendices/_inventaire.tex").write_text("\n".join(tex), encoding="utf-8")22(ROOT / "verification/inventaire.md").write_text(f"# Inventaire ({len(rows)} scripts, {len(data)} fichiers de données, {len(xl)} classeurs, {nfig} figures)\n\n" + "\n".join(f"- {k} `{f}` — {d}" for k, f, d in rows), encoding="utf-8")23print(f"{len(rows)} scripts, {len(data)} données, {len(xl)} classeurs, {nfig} figures")24
Files · 2a26d365cc23544c8343a62de5e56cfc4c06cb46
Menu

Theme