Builder API¶
- class sphinx.builders.Builder[Quelle]¶
Dies ist die Basisklasse für alle Builder.
Sie folgt diesem grundlegenden Workflow
![// UML for the standard Sphinx build workflow
digraph build {
graph [
rankdir=LR
];
node [
shape=rect
style=rounded
];
"Sphinx" [
shape=record
label = "Sphinx | <init> __init__ | <build> build"
];
"legend" [
shape=record
label = <<table border="0" cellborder="0" cellspacing="0">
<tr><td align="center"><u><b>Method types</b></u></td></tr>
<tr><td align="left"><font color="darkorange">Final</font></td></tr>
<tr><td align="left"><font color="darkblue">Overridable</font></td></tr>
<tr><td align="left"><font color="darkgreen">Abstract</font></td></tr>
</table>>
];
{rank=same; "Sphinx" "legend" };
"Builder.init" [color=darkblue];
"Builder.build_all" [color=darkorange];
"Builder.build_specific" [color=darkorange];
"Builder.build_update" [color=darkorange];
"Sphinx":init -> "Builder.init";
"Sphinx":build -> "Builder.build_all";
"Sphinx":build -> "Builder.build_specific";
"Sphinx":build -> "Builder.build_update";
"Builder.get_outdated_docs" [color=darkgreen];
"Builder.build_update" -> "Builder.get_outdated_docs";
"Builder.build" [color=darkorange];
"Builder.build_all" -> "Builder.build";
"Builder.build_specific" -> "Builder.build";
"Builder.build_update":p1 -> "Builder.build";
"Builder.read" [color=darkorange];
"Builder.write" [color=darkorange];
"Builder.finish" [color=darkblue];
"Builder.build" -> "Builder.read";
"Builder.build" -> "Builder.write";
"Builder.build" -> "Builder.finish";
"Builder.read_doc" [color=darkorange];
"Builder.write_doctree" [color=darkorange];
"Builder.read" -> "Builder.read_doc";
"Builder.read_doc" -> "Builder.write_doctree";
"Builder.prepare_writing" [color=darkblue];
"Builder.copy_assets" [color=darkblue];
"Builder.write_documents" [color=darkblue];
"Builder.write":p1 -> "Builder.prepare_writing";
"Builder.write":p1 -> "Builder.copy_assets";
"Builder.write_documents" [
shape=record
label = "<p1> Builder.write_documents | Builder._write_serial | Builder._write_parallel"
];
"Builder.write":p1 -> "Builder.write_documents";
"Builder.write_doc" [color=darkgreen];
"Builder.get_relative_uri" [color=darkblue];
"Builder.write_documents":p1 -> "Builder.write_doc";
"Builder.write_doc" -> "Builder.get_relative_uri";
"Builder.get_target_uri" [color=darkgreen];
"Builder.get_relative_uri" -> "Builder.get_target_uri";
}](../_images/graphviz-e87ab1666a7685a706a5bed2a7744d43bb33cbd4.png)
Aufrufgraph für den Standard-Sphinx-Build-Workflow¶
Überschreibbare Attribute
Diese Klassenattribute sollten in Builder-Unterklassen gesetzt werden
- name: ClassVar[str] = ''¶
Der Name des Builders. Dies ist der Wert, der verwendet wird, um Builder auf der Kommandozeile auszuwählen.
- format: ClassVar[str] = ''¶
Das Ausgabeformat des Builders oder '' wenn keine Dokumentenausgabe erzeugt wird. Dies ist üblicherweise die Dateierweiterung, z.B. "html", obwohl jeder Stringwert akzeptiert wird. Die Formatzeichenkette des Builders kann von verschiedenen Komponenten wie
SphinxPostTransformoder Erweiterungen verwendet werden, um ihre Kompatibilität mit dem Builder zu bestimmen.
- epilog: ClassVar[str] = ''¶
Die Nachricht, die beim erfolgreichen Abschluss des Builds ausgegeben wird. Dies kann eine printf-ähnliche Vorlagenzeichenkette mit den folgenden Schlüsseln sein:
outdir,project
- allow_parallel: ClassVar[bool] = False¶
Ob es sicher ist, parallele Aufrufe von
write_doc()durchzuführen.
- supported_image_types: ClassVar[list[str]] = []¶
Die Liste der MIME-Typen von Bildformaten, die vom Builder unterstützt werden. Bilddateien werden in der Reihenfolge durchsucht, in der sie hier erscheinen.
- supported_remote_images: ClassVar[bool] = False¶
Der Builder kann Ausgabedokumente erstellen, die beim Öffnen externe Bilder abrufen können.
- supported_data_uri_images: ClassVar[bool] = False¶
Das vom Builder erzeugte Dateiformat erlaubt es, Bilder mittels data-URIs einzubetten.
- default_translator_class: ClassVar[type[nodes.NodeVisitor]]¶
Standard-Übersetzerklasse für den Builder. Dies kann durch
set_translator()überschrieben werden.
Kernmethoden
Diese Methoden definieren den Kern-Build-Workflow und dürfen nicht überschrieben werden
- final build_specific(filenames: Sequence[Path]) None[Quelle]¶
Baut nur so viel wie nötig für Änderungen in den filenames neu.
- final build_update() None[Quelle]¶
Baut nur das neu, was seit dem letzten Build geändert oder hinzugefügt wurde.
- final build(docnames: Iterable[str] | None, summary: str | None = None, method: Literal['all', 'specific', 'update'] = 'update') None[Quelle]¶
Haupt-Build-Methode, normalerweise aufgerufen von einer spezifischen
build_*-Methode.Aktualisiert zuerst die Umgebung und ruft dann
write()auf.
- final read() list[str][Quelle]¶
Liest alle Dateien neu oder geändert seit dem letzten Update neu ein.
Speichert alle Umgebungs-Docnames im kanonischen Format (d.h. unter Verwendung von SEP als Trennzeichen anstelle von os.path.sep).
- final read_doc(docname: str, *, _cache: bool = True) None[Quelle]¶
Analysiert eine Datei und fügt/aktualisiert Inventareinträge für den Doctree.
- final write_doctree(docname: str, doctree: document, *, _cache: bool = True) None[Quelle]¶
Schreibt den Doctree in eine Datei, die als Cache für Neubildungen verwendet wird.
- final write(build_docnames: Iterable[str] | None, updated_docnames: Iterable[str], method: Literal['all', 'specific', 'update'] = 'update') None[Quelle]¶
Schreibt die Builder-spezifischen Ausgabedateien.
Abstrakte Methoden
Diese müssen in Builder-Unterklassen implementiert werden
- get_outdated_docs() str | Iterable[str][Quelle]¶
Gibt eine Iterierbare Liste von Ausgabedateien zurück, die veraltet sind, oder eine Zeichenkette, die beschreibt, was ein Update-Build erstellen wird.
Wenn der Builder keine einzelnen Dateien erstellt, die Quellendateien entsprechen, geben Sie hier eine Zeichenkette zurück. Wenn er dies tut, geben Sie eine Iterierbare Liste der Dateien zurück, die geschrieben werden müssen.
- write_doc(docname: str, doctree: document) None[Quelle]¶
Schreibt die Ausgabedatei für das Dokument
- Parameter:
docname – der docname.
doctree – definiert den zu schreibenden Inhalt.
Der Ausgabedateiname muss innerhalb dieser Methode ermittelt werden, typischerweise durch Aufruf von
get_target_uri()oderget_relative_uri().
- get_target_uri(docname: str, typ: str | None = None) str[Quelle]¶
Gibt die Ziel-URI für einen Dokumentennamen zurück.
typ kann verwendet werden, um die Link-Charakteristik für einzelne Builder zu qualifizieren.
Überschreibbare Methoden
Diese Methoden können in Builder-Unterklassen überschrieben werden
- init() None[Quelle]¶
Lädt notwendige Vorlagen und führt die Initialisierung durch. Die Standardimplementierung tut nichts.
- write_documents(docnames: Set[str]) None[Quelle]¶
Schreibt alle Dokumente in docnames.
Diese Methode kann überschrieben werden, wenn ein Builder keine Ausgabedateien für jedes Dokument erstellt.
- prepare_writing(docnames: Set[str]) None[Quelle]¶
Ein Ort, an dem Sie Logik hinzufügen können, bevor
write_doc()ausgeführt wird
- copy_assets() None[Quelle]¶
Wo Assets (Bilder, statische Dateien usw.) vor dem Schreiben kopiert werden
- get_relative_uri(from_: str, to: str, typ: str | None = None) str[Quelle]¶
Gibt eine relative URI zwischen zwei Quellendateien zurück.
- Wirft:
NoUri, wenn es keinen sinnvollen URI zurückgeben kann.
Attribute
Attribute, die von der Builder-Instanz aufgerufen werden können
- events¶
Ein
EventManager-Objekt.
Überschreibbare Attribute (Erweiterungen)
Builder-Unterklassen können diese Attribute setzen, um integrierte Erweiterungen zu unterstützen
- supported_linkcode: str¶
Standardmäßig fügt die
linkcode-Erweiterung nur Referenzen für einenhtml-Builder ein. Das Klassenattributsupported_linkcodekann in einem nicht-HTML-Builder definiert werden, um die Verwaltung von von linkcode generierten Referenzen zu unterstützen. Der erwartete Wert für dieses Attribut ist ein Ausdruck, der mit deronly-Direktive kompatibel ist.Zum Beispiel, wenn ein Builder
custom-builderhieß, kann Folgendes verwendet werdenclass CustomBuilder(Builder): supported_linkcode = 'custom-builder' ...