SPB Git
1.3 KB · 23 lines python
1#!/usr/bin/env python32"""Exécute tous les scripts de figures (analysis/python/figures/chNN_*.py) et les scripts R (analysis/r/chNN_*.R).3Chaque script est idempotent et écrit dans assets/figures/chNN/. Arrêt sur première erreur si --strict."""4import subprocess, sys, pathlib, time5ROOT = pathlib.Path(__file__).resolve().parents[3]6strict = "--strict" in sys.argv7only = [a for a in sys.argv[1:] if not a.startswith("--")]8scripts = sorted((ROOT / "analysis/python/figures").glob("ch*_*.py")) + sorted((ROOT / "analysis/r").glob("ch*_*.R"))9if only: scripts = [s for s in scripts if any(s.name.startswith(o) for o in only)]10fails = []11env = dict(__import__("os").environ, PYTHONPATH=str(ROOT / "analysis/python"))12for s in scripts:13    t = time.time()14    cmd = ["python3", str(s)] if s.suffix == ".py" else ["Rscript", str(s)]15    r = subprocess.run(cmd, cwd=ROOT, capture_output=True, text=True, env=env)16    status = "OK " if r.returncode == 0 else "ERR"17    print(f"{status} {s.relative_to(ROOT)} ({time.time()-t:.1f}s)")18    if r.returncode != 0:19        fails.append(s.name); print(r.stderr[-1500:])20        if strict: sys.exit(1)21print(f"\n{len(scripts)-len(fails)}/{len(scripts)} scripts réussis" + (f" ; échecs : {fails}" if fails else ""))22sys.exit(1 if fails else 0)23
Files · ac7e5213a2af3676c22c1500a18fcfe86d2041bc
Menu

Theme