"""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()