Domain API¶
- Domain(env: BuildEnvironment)[Quellcode]¶
Ein Domain ist dazu gedacht, eine Gruppe von „Objekt“-Beschreibungsdirektiven für Objekte ähnlicher Art und entsprechende Rollen, um auf sie zu verweisen, zu bündeln. Beispiele hierfür sind Python-Module, Klassen, Funktionen usw., Elemente einer Vorlagensprache, Sphinx-Rollen und -Direktiven usw.
Jede Domain hat einen separaten Speicher für Informationen über vorhandene Objekte und wie auf sie in self.data verwiesen werden kann, was ein Wörterbuch sein muss. Sie muss auch mehrere Funktionen implementieren, die die Objektinformationen in einer domänenunabhängigen Weise für Teile von Sphinx bereitstellen, die es dem Benutzer ermöglichen, Objekte domänenunabhängig zu referenzieren oder zu suchen.
Zu self.data: Da alle Objekt- und Querverweisinformationen in einer BuildEnvironment-Instanz gespeichert sind, wird das Objekt domain.data auch im Wörterbuch env.domaindata unter dem Schlüssel domain.name gespeichert. Vor Beginn des Build-Prozesses wird jede aktive Domäne instanziiert und das Umgebungsobjekt übergeben; das domaindata-Wörterbuch muss dann entweder nicht vorhanden sein oder ein Wörterbuch sein, dessen Schlüssel „version“ mit dem Attribut
data_versionder Domänenklasse übereinstimmt. Andernfalls wird OSError ausgelöst und die serialisierte Umgebung verworfen.- add_object_type(name: str, objtype: ObjType) None[Quellcode]¶
Einen Objekttyp hinzufügen.
- check_consistency() None[Quellcode]¶
Konsistenzprüfungen durchführen (experimentell).
- clear_doc(docname: str) None[Quellcode]¶
Spuren eines Dokuments aus den domänenspezifischen Inventaren entfernen.
- directive(name: str) type[Directive] | None[Quellcode]¶
Eine Direktiven-Adapterklasse zurückgeben, die der registrierten Direktive immer ihren vollständigen Namen („domain:name“) als
self.namegibt.
- get_enumerable_node_type(node: Node) str | None[Quellcode]¶
Typ von aufzählbaren Knoten abrufen (experimentell).
- get_full_qualified_name(node: Element) str | None[Quellcode]¶
Vollqualifizierten Namen für den gegebenen Knoten zurückgeben.
- get_objects() Iterable[tuple[str, str, str, str, str, int]][Quellcode]¶
Ein iterierbares Objekt von „Objektbeschreibungen“ zurückgeben.
Objektbeschreibungen sind Tupel mit sechs Elementen
nameVollqualifizierter Name.
AnzeigenameName, der beim Suchen/Verknüpfen angezeigt werden soll.
TypObjekttyp, ein Schlüssel in
self.object_types.DokumentennameDas Dokument, in dem er zu finden ist.
AnkerDer Ankername für das Objekt.
PrioritätWie „wichtig“ das Objekt ist (bestimmt die Platzierung in Suchergebnissen). Einer von
1Standardpriorität (platziert vor Volltext-Übereinstimmungen).
0Objekt ist wichtig (platziert vor Standardprioritätsobjekten).
2Objekt ist unwichtig (platziert nach Volltext-Übereinstimmungen).
-1Objekt sollte überhaupt nicht in der Suche angezeigt werden.
- get_type_name(type: ObjType, primary: bool = False) str[Quellcode]¶
Vollständigen Namen für den gegebenen ObjType zurückgeben.
- merge_domaindata(docnames: Set[str], otherdata: dict[str, Any]) None[Quellcode]¶
Daten bezüglich docnames aus einem anderen Domaindaten-Inventar zusammenführen (kommt von einem Subprozess bei parallelen Builds).
- process_doc(env: BuildEnvironment, docname: str, document: nodes.document) None[Quellcode]¶
Ein Dokument verarbeiten, nachdem es von der Umgebung gelesen wurde.
- process_field_xref(pnode: pending_xref) None[Quellcode]¶
Eine in einem Feld des Dokuments erstellte ausstehende Querverweisung verarbeiten. Zum Beispiel Informationen über den aktuellen Gültigkeitsbereich anhängen.
- resolve_any_xref(env: BuildEnvironment, fromdocname: str, builder: Builder, target: str, node: pending_xref, contnode: Element) list[tuple[str, nodes.reference]][Quellcode]¶
Die ausstehende Querverweisung node mit dem gegebenen target auflösen.
Die Referenz stammt von einer „any“- oder ähnlichen Rolle, was bedeutet, dass wir den Typ nicht kennen. Andernfalls sind die Argumente dieselben wie für
resolve_xref().Die Methode muss eine Liste (potenziell leer) von Tupeln
‘domain:role‘, newnodezurückgeben, wobei‘domain:role‘der Name einer Rolle ist, die dieselbe Referenz erstellen könnte, z. B.‘py:func‘.newnodeist das, wasresolve_xref()zurückgeben würde.Hinzugefügt in Version 1.3.
- resolve_xref(env: BuildEnvironment, fromdocname: str, builder: Builder, typ: str, target: str, node: pending_xref, contnode: Element) nodes.reference | None[Quellcode]¶
Die ausstehende Querverweisung node mit dem gegebenen typ und target auflösen.
Diese Methode sollte einen neuen Knoten zurückgeben, um den xref-Knoten zu ersetzen, der den contnode enthält, der den Markup-Inhalt der Querverweisung darstellt.
Wenn keine Auflösung gefunden werden kann, kann None zurückgegeben werden; der xref-Knoten wird dann an das
missing-reference-Ereignis weitergegeben und, wenn dies keine Auflösung ergibt, durch contnode ersetzt.Die Methode kann auch
sphinx.environment.NoUriauslösen, um zu unterdrücken, dass dasmissing-reference-Ereignis ausgelöst wird.
- role(name: str) RoleFunction | None[Quellcode]¶
Eine Rollen-Adapterfunktion zurückgeben, die der registrierten Rolle immer ihren vollständigen Namen („domain:name“) als erstes Argument gibt.
- setup() None[Quellcode]¶
Domänenobjekt einrichten.
- dangling_warnings: ClassVar[dict[str, str]] = {}¶
Rollennamen -> eine Warnmeldung, wenn die Referenz fehlt
- data_version: ClassVar[int] = 0¶
Datenversion, erhöhen Sie diese, wenn sich das Format von self.data ändert
- enumerable_nodes: ClassVar[dict[type[Node], tuple[str, TitleGetter | None]]] = {}¶
node_class -> (enum_node_type, title_getter)
- label: ClassVar[str] = ''¶
Domänenbezeichnung: länger, beschreibender (wird in Nachrichten verwendet)
- class sphinx.domains.ObjType(lname: str, /, *roles: Any, **attrs: Any)[source]¶
Ein ObjType ist die Beschreibung für einen Objekttyp, den eine Domain dokumentieren kann. Im Attribut object_types von Domain-Unterklassen werden Objekttypnamen auf Instanzen dieser Klasse abgebildet.
Konstruktorargumente
lname: lokalisierter Name des Typs (Domain-Name nicht enthalten)
roles: alle Rollen, die auf ein Objekt dieses Typs verweisen können
attrs: Objektattribute – derzeit ist nur „searchprio“ bekannt, das die Priorität des Objekts im Volltextsuchindex definiert, siehe
Domain.get_objects().
- class sphinx.domains.Index(domain: Domain)[source]¶
Ein Index ist die Beschreibung für einen domänenspezifischen Index. Um einen Index zu einer Domain hinzuzufügen, erben Sie von Index und überschreiben die drei Namensattribute
name ist ein Bezeichner, der zur Generierung von Dateinamen verwendet wird. Er wird auch als Hyperlinkziel für den Index verwendet. Daher können Benutzer die Indexseite über die Rolle
refund eine Zeichenkette, die Domain-Name und Attributnamekombiniert (z. B.:ref:`py-modindex`), referenzieren.localname ist der Abschnittstitel für den Index.
shortname ist ein kurzer Name für den Index, der in der Relationsleiste in der HTML-Ausgabe verwendet wird. Kann leer sein, um Einträge in der Relationsleiste zu deaktivieren.
und Bereitstellen einer
generate()-Methode. Fügen Sie dann die Indexklasse zur indices-Liste Ihrer Domain hinzu. Erweiterungen können Indizes zu bestehenden Domains überadd_index_to_domain()hinzufügen.Geändert in Version 3.0: Indexseiten können über die Rolle
refnach Domain- und Indexnamen referenziert werden.- abstractmethod generate(docnames: Iterable[str] | None = None) tuple[list[tuple[str, list[IndexEntry]]], bool][source]¶
Einträge für den Index abrufen.
Wenn
docnamesangegeben ist, beschränkt sich die Suche auf Einträge, die auf diese Dokumentennamen verweisen.Der Rückgabewert ist ein Tupel von
(inhalt, kollabieren)kollabierenEin Boolescher Wert, der bestimmt, ob Untereinträge zusammengeklappt werden sollen (für Ausgabeformate, die das Zusammenklappen von Untereinträgen unterstützen).
inhalt:Eine Sequenz von
(buchstabe, einträge)-Tupeln, wobeibuchstabedie „Überschrift“ für die angegebeneneinträgeist, normalerweise der Anfangsbuchstabe, undeinträgeeine Sequenz einzelner Einträge ist. Jeder Eintrag ist einIndexEntry.
- class sphinx.domains.IndexEntry(name: str, subtype: int, docname: str, anchor: str, extra: str, qualifier: str, descr: str)[source]¶
Ein Indexeintrag.
Hinweis
Der *Qualifikator* und die *Beschreibung* werden für einige Ausgabeformate, wie z.B. LaTeX, nicht gerendert.
- class sphinx.directives.ObjectDescription(name, arguments, options, content, lineno, content_offset, block_text, state, state_machine)[source]¶
Direktive zur Beschreibung einer Klasse, Funktion oder eines ähnlichen Objekts.
Nicht direkt verwendet, sondern abgeleitet (in domänenspezifischen Direktiven), um benutzerdefiniertes Verhalten hinzuzufügen.
- _object_hierarchy_parts(sig_node: desc_signature) tuple[str, ...][source]¶
Gibt ein Tupel von Zeichenketten zurück, einen Eintrag für jeden Teil der Objekt-Hierarchie (z. B.
('modul', 'submodul', 'Klasse', 'methode')). Das zurückgegebene Tupel wird verwendet, um Kinder in der Inhaltsübersicht richtig zu verschachteln, und kann auch in der Methode_toc_entry_name()verwendet werden.Diese Methode darf nicht außerhalb der Generierung der Inhaltsübersicht verwendet werden.
- _toc_entry_name(sig_node: desc_signature) str[source]¶
Gibt den Text des Eintrags der Inhaltsübersicht für das Objekt zurück.
Diese Funktion wird einmal in
run()aufgerufen, um den Namen für den Eintrag der Inhaltsübersicht festzulegen (ein spezielles Attribut_toc_namewird auf dem Objektknoten gesetzt, das später inenvironment.collectors.toctree.TocTreeCollector.process_doc().build_toc()verwendet wird, wenn die Einträge der Inhaltsübersicht gesammelt werden).Um Inhaltsübersichtseinträge für ihre Objekte zu unterstützen, müssen Domains diese Methode überschreiben und auch die Konfigurationseinstellung
toc_object_entries_show_parentsberücksichtigen. Domains müssen auch_object_hierarchy_parts()überschreiben, mit einem (Zeichenketten-)Eintrag für jeden Teil der Objekt-Hierarchie. Das Ergebnis dieser Methode wird auf dem Signaturknoten gesetzt und kann alssig_node['_toc_parts']zugegriffen werden, um innerhalb dieser Methode verwendet zu werden. Das resultierende Tupel wird auch verwendet, um Kinder in der Inhaltsübersicht richtig zu verschachteln.Eine beispielhafte Implementierung dieser Methode befindet sich in der Python-Domain (
PyObject._toc_entry_name()). Die Python-Domain setzt das Attribut_toc_partsinnerhalb der Methodehandle_signature().
- add_target_and_index(name: ObjDescT, sig: str, signode: desc_signature) None[source]¶
Fügt Querverweis-IDs und Einträge zu self.indexnode hinzu, falls zutreffend.
name ist alles, was
handle_signature()zurückgegeben hat.
- after_content() None[source]¶
Wird nach dem Parsen des Inhalts aufgerufen.
Wird verwendet, um Informationen über den aktuellen Direktivenkontext in der Build-Umgebung zurückzusetzen.
- before_content() None[source]¶
Wird vor dem Parsen des Inhalts aufgerufen.
Wird verwendet, um Informationen über den aktuellen Direktivenkontext in der Build-Umgebung zu setzen.
- get_signatures() list[str][source]¶
Ruft die zu dokumentierenden Signaturen aus den Direktivenargumenten ab.
Standardmäßig werden Signaturen als Argumente übergeben, eine pro Zeile.
- handle_signature(sig: str, signode: desc_signature) ObjDescT[source]¶
Parst die Signatur sig.
Die einzelnen Knoten werden dann an signode angehängt. Wenn ValueError ausgelöst wird, wird das Parsen abgebrochen und die gesamte sig in einen einzelnen desc_name-Knoten gestellt.
Der Rückgabewert sollte ein Wert sein, der das Objekt identifiziert. Er wird unverändert an
add_target_and_index()übergeben und ansonsten nur zum Überspringen von Duplikaten verwendet.
- run() list[Node][source]¶
Haupt-Direktiven-Einstiegsfunktion, die von docutils beim Anwenden der Direktive aufgerufen wird.
Diese Direktive ist so konzipiert, dass sie recht einfach abgeleitet werden kann. Daher delegiert sie an mehrere zusätzliche Methoden. Was sie tut:
Ermitteln, ob sie als domänenspezifische Direktive aufgerufen wird, setzen von self.domain
Erstellen eines desc-Knotens, um die gesamte Beschreibung darin unterzubringen
Parsen von Standardoptionen, derzeit no-index
Erstellen eines Indexknotens, falls erforderlich, als self.indexnode
Parsen aller übergebenen Signaturen (gemäß self.get_signatures()), wobei self.handle_signature() verwendet wird, das entweder einen Namen zurückgeben oder ValueError auslösen sollte
Hinzufügen von Indexeinträgen mit self.add_target_and_index()
Parsen des Inhalts und Behandeln von Feldern darin
- transform_content(content_node: desc_content) None[source]¶
Kann verwendet werden, um den Inhalt zu manipulieren.
Aufgerufen nach der Erstellung des Inhalts durch verschachteltes Parsen, aber bevor das Ereignis
object-description-transformausgelöst wird und bevor die Info-Felder transformiert werden.
- final_argument_whitespace = True¶
Kann das letzte Argument Leerzeichen enthalten?
- has_content = True¶
Kann die Direktive Inhalt haben?
- option_spec: ClassVar[OptionSpec] = {'no-contents-entry': <function flag>, 'no-index': <function flag>, 'no-index-entry': <function flag>, 'no-typesetting': <function flag>, 'nocontentsentry': <function flag>, 'noindex': <function flag>, 'noindexentry': <function flag>}¶
Zuordnung von Optionsnamen zu Validierungsfunktionen.
- optional_arguments = 0¶
Anzahl der optionalen Argumente nach den erforderlichen Argumenten.
- required_arguments = 1¶
Anzahl der erforderlichen Direktivenargumente.