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>
48 lines
1.3 KiB
Python
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()
|