Aufgeraeumt: 33 PNG-Zweitfassungen, Bau-Ueberbleibsel, Ausgabepfade
Drei Aufraeumarbeiten - und zwei Funde, die dabei auffielen.
1. DIE PNG-ZWEITFASSUNGEN SIND WEG. Jedes Diagramm lag doppelt vor, als SVG
und als PNG, und kein einziges src=/href= in der Website zeigte je auf ein
PNG. Der Build kopierte sie trotzdem mit: 3,3 MB im Repository plus 3,3 MB,
die bei jeder Veroeffentlichung auf den Webserver gingen. Die 15 Generatoren
schreiben jetzt nur noch SVG, die Docstrings sind mitgezogen. Vor dem
Loeschen geprueft: Jedes PNG hatte sein gleichnamiges SVG, alle 33 waren
versioniert.
FUND 1: erzeuge_kap06_gantt.py folgte als einziger Generator nicht der
Konvention - weder svg.hashsalt noch metadata={"Date": None}. Sein SVG trug
einen echten Zeitstempel und bei jedem Lauf andere clip-path-IDs, war also
nie byteidentisch reproduzierbar, obwohl CLAUDE.md genau das fuer alle
Generatoren festhaelt. Aufgefallen nur, weil nach der PNG-Umstellung 32 von
33 SVGs bitgleich blieben und eines nicht. Jetzt byteidentisch ueber zwei
Laeufe.
FUND 2: spiegle_bilder() legte leere Verzeichnisse auf dem Webserver an. Der
Dateifilter arbeitete korrekt, aber os.walk durchlief auch __pycache__/, und
os.makedirs() erzeugte es am Ziel. Die Verzeichnisliste wird jetzt vorher
gefiltert. Gegengetestet.
2. BAU-UEBERBLEIBSEL entfernt (alle ignoriert und neu erzeugbar):
svg-inkscape/, build_v04.log, .pytest_cache/, Programme/output/, vier
__pycache__/ und die Excel-Mappen. Arbeitsbaum 36 -> 33 MB, danach null
ignorierte Ueberbleibsel.
3. Excel_Bruecke.py SCHREIBT NEBEN DAS SKRIPT statt ins
Arbeitsverzeichnis. Es benutzte blanke relative Namen; wer es aus der
Repository-Wurzel startete, verstreute dort produktionsmix.xlsx und
produktionsmix_ergebnis.xlsx. Jetzt wie die vier anderen schreibenden
Programme ueber os.path.dirname(os.path.abspath(__file__)). Nachgemessen:
Lauf aus der Wurzel legt dort null Dateien ab.
Ausserdem git gc: 653 lose Objekte gepackt, .git von 71 MB auf 28 MB -
reines Repacken, kein Inhalt beruehrt.
Geprueft: alle 33 im Buch referenzierten SVGs vorhanden, in Quelle und
Website; 16 Generatoren fehlerfrei; keine fehlenden Bilder im LaTeX-Lauf;
33 pytest-Tests; PDF unveraendert 760 Seiten.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
3e5c6fc627
commit
360912dbfa
97 changed files with 322 additions and 248 deletions
|
|
@ -966,8 +966,13 @@ import pandas as pd
|
|||
from or_kern import (lade_produktionsproblem, loese_mit_glop, pruefe_loesung,
|
||||
schreibe_ergebnis)
|
||||
|
||||
EINGABE = "produktionsmix.xlsx"
|
||||
AUSGABE = "produktionsmix_ergebnis.xlsx"
|
||||
# Die Mappen liegen NEBEN diesem Programm, nicht im aktuellen
|
||||
# Arbeitsverzeichnis. Sonst haengt es davon ab, aus welchem Ordner man das
|
||||
# Skript startet, wo die Dateien landen - und wer es aus der
|
||||
# Repository-Wurzel aufruft, verstreut sie dort.
|
||||
HIER = os.path.dirname(os.path.abspath(__file__))
|
||||
EINGABE = os.path.join(HIER, "produktionsmix.xlsx")
|
||||
AUSGABE = os.path.join(HIER, "produktionsmix_ergebnis.xlsx")
|
||||
|
||||
|
||||
def lege_beispieldatei_an(pfad: str) -> None:
|
||||
|
|
|
|||
|
|
@ -1447,7 +1447,13 @@ def spiegle_bilder(html_verz: str) -> None:
|
|||
return
|
||||
ziel_wurzel = os.path.join(html_verz, BILDER_NAME)
|
||||
kopiert = 0
|
||||
for wurzel, _verzeichnisse, dateien in os.walk(BILDER_VERZ):
|
||||
for wurzel, verzeichnisse, dateien in os.walk(BILDER_VERZ):
|
||||
# Unterverzeichnisse ohne Grafiken gar nicht erst betreten. os.walk
|
||||
# wuerde sie sonst durchlaufen, und os.makedirs() legte sie am Ziel an -
|
||||
# so stand ein leeres __pycache__/ auf dem Webserver, obwohl der
|
||||
# Dateifilter unten korrekt nichts daraus kopiert hat.
|
||||
verzeichnisse[:] = [v for v in verzeichnisse
|
||||
if v != "__pycache__" and not v.startswith(".")]
|
||||
rel = os.path.relpath(wurzel, BILDER_VERZ)
|
||||
ziel_verz = ziel_wurzel if rel == "." else os.path.join(ziel_wurzel, rel)
|
||||
os.makedirs(ziel_verz, exist_ok=True)
|
||||
|
|
|
|||
Loading…
Reference in a new issue