Files
ArtemiaandClaude Opus 5.5 d933e348c0 Retire les .odt et l'insertion XML, désormais remplacés par Quarto
Les supports .odt restent récupérables via le tag avant-quarto. Les figures ne déclarent plus que leur identifiant et leur fonction de dessin (légende et emplacement dans le .qmd). Génération SVG reproductible (sans date, identifiants stables) pour des diffs git propres. README : mode d'emploi Quarto et schémas.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 15:04:25 +02:00

48 lines
1.3 KiB
Python

"""Génère les schémas (SVG + PNG) de tous les modules, ou de ceux passés en argument.
Usage : python schemas/generer.py [m03 ...]
"""
import importlib
import sys
from pathlib import Path
import matplotlib.pyplot as plt
ICI = Path(__file__).resolve().parent
sys.path.insert(0, str(ICI))
DOSSIER_SVG = ICI / "svg"
DOSSIER_PNG = ICI / "png"
def modules_figures(filtres=()):
"""Renvoie {préfixe 'mXX': [Figure, ...]} pour chaque fichier mXX_*.py."""
resultat = {}
for fichier in sorted(ICI.glob("m[0-9][0-9]_*.py")):
prefixe = fichier.stem[:3]
if filtres and prefixe not in filtres:
continue
resultat[prefixe] = importlib.import_module(fichier.stem).FIGURES
return resultat
def enregistrer(fig, id_):
if hasattr(fig, "fig"): # dessin schemdraw (backend matplotlib)
fig = fig.fig
fig.savefig(DOSSIER_SVG / f"{id_}.svg", metadata={"Date": None}) # pas de date : diff git stable
fig.savefig(DOSSIER_PNG / f"{id_}.png", dpi=200)
plt.close(fig)
def main():
DOSSIER_SVG.mkdir(exist_ok=True)
DOSSIER_PNG.mkdir(exist_ok=True)
for prefixe, figures in modules_figures(sys.argv[1:]).items():
for f in figures:
enregistrer(f.dessiner(), f.id)
print(f"{f.id} : OK")
if __name__ == "__main__":
main()