Dokumentation pflegen¶
Dieser Leitfaden richtet sich an Mitwirkende, die Benutzerseiten, API-Seiten,
Beispiele oder die Veröffentlichungspipeline ändern. GitLab Pages
veröffentlicht docs/next/source. Der bisherige Baum docs/source bleibt
vorübergehend als Rückfallebene der Migration erhalten, ist aber nicht mehr die
gepflegte Veröffentlichungsquelle.
Quellstruktur¶
docs/next/source/deunddocs/next/source/enZweisprachige Benutzerleitfäden. Beide Bäume besitzen dieselben relativen
.rst-Pfade und gleichwertige technische Informationen.docs/next/source/apiGemeinsame englische API- und Kommandozeilenreferenz. Kuratierte Seiten zeigen die empfohlenen öffentlichen Schnittstellen;
api/fullwird generiert.docs/next/source/_staticVersionskontrollierte Abbildungen und weitere statische Dateien.
docs/next/MIGRATION.mdPrüfstatus der Inhalte aus der veröffentlichten Dokumentation und Checkliste für die Umschaltung.
test/test_docs_next_structure.pyStrukturelle Sicherungen für Sprachparität und wichtige technische Inhalte.
Lokale Einrichtung und Build¶
Projekt und Dokumentationsabhängigkeiten werden im Repository-Wurzelverzeichnis installiert:
python -m pip install -e ".[docs]"
Graphviz dot ist ein Systemprogramm und kein Python-Paket. Es wird für
Graphviz-Direktiven benötigt. Der vollständige Dokumentations-Build behandelt
Warnungen als Fehler:
MPLCONFIGDIR=/tmp/mpylab-matplotlib \
sphinx-build -W --keep-going -E -a -b html \
docs/next/source build/docs
-E -a baut Umgebung und alle Seiten bewusst neu auf, damit kein Cache
defekte Referenzen verdeckt. Das Ergebnis beginnt unter
build/docs/index.html.
Zusätzlich werden Strukturtests und Whitespace-Prüfung ausgeführt:
python -m pytest test/test_docs_next_structure.py
python tools/check_public_docstrings.py
git diff --check
Zweisprachige Seiten¶
Jede benutzerorientierte Seite unter einer Sprachwurzel besitzt unter der anderen Wurzel ein Gegenstück mit demselben relativen Pfad. Beide Dateien und beide Toctree-Einträge werden gemeinsam ergänzt. Codenamen, Konfigurationsschlüssel, Einheiten und Kommandobeispiele bleiben identisch; Erläuterungen und UI-Begriffe werden übersetzt.
Python-Docstrings und API-Seiten bleiben ausschließlich englisch. Neue und überarbeitete öffentliche Docstrings verwenden den NumPy-Stil. Es werden keine doppelten deutschen API-Wrapper angelegt. Deutsche Leitfäden verlinken bei Bedarf auf die gemeinsame API.
Regeln für die API-Erzeugung¶
Die kuratierten Seiten unmittelbar unter api/ werden manuell gepflegt.
Sie dokumentieren Schnittstellen, die Anwendungen in der Regel verwenden
sollen, und wiederholen geerbte Methoden nicht für jeden konkreten Treiber.
Die vollständige Referenz erzeugt sphinx.ext.apidoc entsprechend
apidoc_modules in docs/next/source/conf.py. Dateien unter api/full
werden nicht manuell geändert; ein sauberer Build kann sie ersetzen.
Legacy-Module, generierte Versionsdateien, UI-Implementierungsmodule und andere
bewusste Interna werden in conf.py ausgeschlossen. Generierte Seiten
verwenden no-index, damit die kuratierte API die primäre indizierte
Definition bleibt.
Öffentliche Docstrings werden auf Englisch geschrieben. Eine neue gemeinsame Klasse, Funktion oder Exception gehört in eine kuratierte Seite, wenn sie ein vorgesehener Erweiterungspunkt, häufig in Anwendungen genutzt oder für Lebenszyklus und Sicherheit wichtig ist. Andere öffentliche Module bleiben über die vollständige Referenz auffindbar.
tools/check_public_docstrings.py prüft unabhängig von Sphinx alle
importierbaren Module sowie öffentliche Klassen, Funktionen und Methoden unter
src/mpylab. Private Namen, Legacy-Module, die generierte Versionsdatei und
Framework-Callbacks wie Qt-Slots, PLY-Grammatikregeln und dynamisch ausgewählte
Grenzwertkurven sind bewusst ausgenommen. Die Prüfung akzeptiert keine
Bestandsliste fehlender Docstrings: eine neue öffentliche Schnittstelle muss
direkt einen englischen Docstring erhalten.
Bei Gerätetreibern beschreibt die Basisklasse die gemeinsame Schnittstelle.
Ein konkreter Treiber muss geerbte Methoden wie Init, SetFreq oder
GetData nicht wortgleich erneut dokumentieren. Der Checker erkennt solche
Überschreibungen anhand der tatsächlichen Vererbungskette. Zusätzliche
gerätespezifische Methoden, neue Konstruktorparameter sowie fachliche
Abweichungen vom Verhalten der Basisklasse benötigen dagegen einen eigenen
Docstring. Damit bleibt die Dokumentation konsistent, ohne Kopien des
gemeinsamen Geräteverhaltens anzulegen.
Mit --check-signatures vergleicht das Werkzeug zusätzlich die Python-
Signatur und tatsächliche Rückgabepfade mit den dokumentierten Parametern,
Returns- und Yields-Abschnitten. Während der Umstellung erkennt es
auch bestehende reStructuredText- und Google-Abschnitte. Ziel und Vorgabe für
neue oder geänderte Schnittstellen ist jedoch der durch
sphinx.ext.napoleon dargestellte NumPy-Stil.
python tools/check_public_docstrings.py --check-signatures
Die CI führt diese vollständige Prüfung mit
tools/public_docstring_signature_baseline.json aus. Die Baseline hält
bekannte Signaturlücken der Bestandsdokumentation komponentengenau fest. Eine
neue öffentliche Schnittstelle, ein neuer undokumentierter Parameter oder ein
neu fehlender Returns-/Yields-Abschnitt lässt die Prüfung weiterhin
fehlschlagen. Verbesserungen sind jederzeit erlaubt und verkleinern die
Bestandsabweichung.
python tools/check_public_docstrings.py \
--signature-baseline tools/public_docstring_signature_baseline.json
Wird eine öffentliche Methode fachlich oder an ihrer Signatur geändert, wird ihr Docstring im selben Arbeitsschritt vollständig geprüft und im NumPy-Stil ergänzt. Die Baseline wird danach nur zum Entfernen der behobenen Altlast aktualisiert. Neue Einträge allein zum Beruhigen der CI sind nicht zulässig.
Abbildungen und generierte Dateien¶
Gepflegte Diagramme liegen unter docs/next/source/_static und werden
relativ zur Seite referenziert. Für Diagramme und Plots ist SVG vorzuziehen,
wenn eine Vektorausgabe verfügbar ist. Jede Abbildung benötigt einen
aussagekräftigen Alternativtext und eine Bildunterschrift mit ihrer technischen
Bedeutung. HTML-Buildverzeichnisse und generierte api/full-Seiten werden
nicht eingecheckt, solange der Veröffentlichungsprozess dies nicht bewusst
anders festlegt.
Beispiele müssen ausführbar sein oder aus versionskontrollierten virtuellen Konfigurationen stammen. Arbeitsplatzspezifische absolute Pfade, private Messdaten und Hardwarezugangsdaten gehören nicht in die Dokumentation.
Prüfliste¶
Vor einem Commit wird geprüft:
Deutsche und englische Seiten haben gleiche Pfade und synchronen Inhalt.
Kommandos, API-Namen, Konfigurationsschlüssel und Ausgabedateien entsprechen dem Code.
Neue Seiten stehen in einem Toctree und besitzen nützliche Querverweise.
Fachbegriffe erhalten bei Bedarf Index- oder Glossareinträge.
Codebeispiele kennzeichnen notwendigen Hardwarezugriff.
Bei geänderten öffentlichen Methoden sind Parameter, Rückgabe und Docstring gemeinsam geprüft worden.
Sphinx läuft mit
-W --keep-going -E -afehlerfrei.check_public_docstrings.py,test_docs_next_structure.pyundgit diff --checklaufen durch.MIGRATION.mdspiegelt abgeschlossene Migrationsarbeit wider.
CI und Veröffentlichung¶
Der Job create-pages in .gitlab-ci.yml installiert .[docs], prüft
die Verfügbarkeit von Graphviz und baut docs/next/source direkt nach
public. Warnungen werden dabei als Fehler behandelt.
sphinx.ext.apidoc erzeugt api/full während dieses Builds entsprechend
der conf.py. Die bisherigen Hilfsskripte tools/docs_generate_api.py und
tools/docs_audit.py gehören zum alten Veröffentlichungspfad und werden für
die aktuelle Dokumentation nicht ausgeführt.
Der Job test führt zuvor tools/check_public_docstrings.py mit der
versionierten Signatur-Baseline aus. Damit blockieren eine neue
undokumentierte öffentliche Python-Schnittstelle und jede neue oder
verschlechterte Signaturlücke bereits die Teststufe und nicht erst die
Sphinx-Veröffentlichung.
Für alte Dokumentations-URLs werden keine Kompatibilitäts-Redirects erzeugt.
Die neue Informationsarchitektur ist maßgeblich. docs/source bleibt einen
Release-Zyklus unverändert als Rückfallebene erhalten und kann danach in einem
getrennt geprüften Commit entfernt werden.
Historische Inhalte¶
Historische Leitfäden bleiben wertvoll, dürfen aber nicht wie aktuelle
Betriebsanweisungen erscheinen. Sie liegen in passenden de/archive- und
en/archive-Seiten mit deutlichen historischen Hinweisen und Verweisen auf
aktuelle Ersatzseiten. Ein historisches Verfahren wird nicht still
modernisiert; Korrekturen gehören in den aktuellen Leitfaden.
Den abgeschlossenen Migrationsstand und die Entscheidung zu alten URLs hält die
Datei docs/next/MIGRATION.md außerhalb des Sphinx-Quellbaums.