PEP 12 – Beispiel-PEP-Vorlage in reStructuredText
- Autor:
- David Goodger <goodger at python.org>, Barry Warsaw <barry at python.org>, Brett Cannon <brett at python.org>
- Status:
- Aktiv
- Typ:
- Prozess
- Erstellt:
- 05-Aug-2002
- Post-History:
- 30-Aug-2002
Hinweis
Für diejenigen, die bereits eine PEP verfasst haben, gibt es eine Vorlage (die als Datei im PEPs-Repository enthalten ist).
Zusammenfassung
Diese PEP stellt eine Vorlage oder ein Beispiel für die Erstellung Ihrer eigenen PEPs in reStructuredText bereit. In Verbindung mit den Inhaltsrichtlinien in PEP 1 sollte es Ihnen leicht fallen, Ihre eigenen PEPs an das unten beschriebene Format anzupassen.
Hinweis: Wenn Sie diese PEP über das Web lesen, sollten Sie zuerst den Quelltext (reStructuredText) dieser PEP herunterladen, um die unten beschriebenen Schritte auszuführen. VERWENDEN SIE NICHT DIE HTML-DATEI ALS IHRE VORLAGE!
Der Quelltext für diese (oder jede andere) PEP kann im PEPs-Repository sowie über einen Link am Ende jeder PEP gefunden werden.
Begründung
Wenn Sie eine PEP einreichen möchten, MÜSSEN Sie diese Vorlage in Verbindung mit den unten stehenden Formatrichtlinien verwenden, um sicherzustellen, dass Ihre PEP-Einreichung nicht automatisch wegen des Formats abgelehnt wird.
reStructuredText bietet PEP-Autoren nützliche Funktionalität und Ausdrucksstärke und erhält gleichzeitig eine einfache Lesbarkeit im Quelltext. Die verarbeitete HTML-Form macht die Funktionalität für die Leser zugänglich: Live-Hyperlinks, formatierter Text, Tabellen, Bilder und automatische Inhaltsverzeichnisse, unter anderem.
Anleitung zur Verwendung dieser Vorlage
Um diese Vorlage zu verwenden, müssen Sie zuerst entscheiden, ob Ihre PEP eine "Informational" oder "Standards Track" PEP sein wird. Die meisten PEPs sind "Standards Track", da sie eine neue Funktion für die Python-Sprache oder die Standardbibliothek vorschlagen. Im Zweifelsfall lesen Sie PEP 1 für Details oder eröffnen Sie ein Tracker-Issue im PEPs-Repo, um Hilfe zu erhalten.
Sobald Sie entschieden haben, welcher PEP-Typ Ihrer ist, befolgen Sie die nachstehenden Anweisungen.
- Erstellen Sie eine Kopie dieser Datei (die
.rst-Datei, nicht die HTML!) und nehmen Sie die folgenden Bearbeitungen vor. Benennen Sie die neue Dateipep-NNNN.rst, wobei Sie die nächste verfügbare Nummer verwenden (nicht von einer veröffentlichten oder in PR befindlichen PEP verwendet). - Ersetzen Sie die Kopfzeile „PEP: 12“ durch „PEP: NNNN“, passend zum Dateinamen. Beachten Sie, dass der Dateiname mit Nullen aufgefüllt werden sollte (z. B.
pep-0012.rst), die Kopfzeile jedoch nicht (PEP: 12). - Ändern Sie die Titel-Kopfzeile in den Titel Ihrer PEP.
- Ändern Sie die Autoren-Kopfzeile, um Ihren Namen und optional Ihre E-Mail-Adresse anzugeben. Achten Sie auf das richtige Format: Ihr Name muss zuerst erscheinen und darf nicht in Klammern stehen. Ihre E-Mail-Adresse kann als zweites erscheinen (oder weggelassen werden) und muss, wenn sie erscheint, in spitzen Klammern stehen. Es ist in Ordnung, Ihre E-Mail-Adresse zu verschleiern.
- Wenn keiner der Autoren ein Python-Core-Entwickler ist, fügen Sie eine Sponsor-Kopfzeile mit dem Namen des Core-Entwicklers hinzu, der Ihre PEP sponsert.
- Fügen Sie unter der Kopfzeile „Discussions-To“ die direkte URL des kanonischen Diskussionsfadens der PEP (z. B. auf Python-Dev, Discourse usw.) hinzu. Wenn der Thread nach der Einreichung der PEP als offizieller Entwurf erstellt wird, ist es in Ordnung, zunächst „Pending“ anzugeben, aber denken Sie daran, die PEP mit der URL zu aktualisieren, sobald die PEP erfolgreich in das PEPs-Repository übernommen wurde und Sie den entsprechenden Diskussionsfaden erstellen. Weitere Details finden Sie in PEP 1.
- Ändern Sie die Kopfzeile „Status“ in „Draft“.
- Für „Standards Track“-PEPs ändern Sie die Kopfzeile „Type“ in „Standards Track“.
- Für „Informational“-PEPs ändern Sie die Kopfzeile „Type“ in „Informational“.
- Fügen Sie für „Standards Track“-PEPs direkt nach der Kopfzeile „Type“ eine „Requires“-Kopfzeile hinzu, wenn Ihre Funktion von der Akzeptanz einer anderen, derzeit in der Entwicklung befindlichen PEP abhängt. Der Wert sollte die PEP-Nummer der PEP sein, von der Ihre abhängt. Fügen Sie diese Kopfzeile nicht hinzu, wenn Ihre abhängige Funktion in einer abgeschlossenen PEP beschrieben ist.
- Ändern Sie die Kopfzeile „Created“ in das heutige Datum. Achten Sie auf das richtige Format: Es muss im Format
dd-mmm-yyyysein, wobeimmmdie 3-buchstabige englische Monatsabkürzung ist, d. h. einer von Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec. - Fügen Sie für „Standards Track“-PEPs nach der Kopfzeile „Created“ eine „Python-Version“-Kopfzeile hinzu und setzen Sie den Wert auf die nächste geplante Python-Version, d. h. die, in der Ihre neue Funktion hoffentlich erstmals erscheint. Verwenden Sie hier keine Alpha- oder Beta-Releasenummerierung. Wenn also die letzte Python-Version 2.2 Alpha 1 war und Sie hoffen, Ihre neue Funktion in Python 2.2 einzubringen, setzen Sie die Kopfzeile auf
Python-Version: 2.2
- Fügen Sie eine „Topic“-Kopfzeile hinzu, wenn die PEP unter einem im Topic Index aufgeführten Thema fällt. Die meisten PEPs tun das nicht.
- Lassen Sie „Post-History“ vorerst unverändert; Sie werden jedes Mal, wenn Sie Ihre PEP im dafür vorgesehenen Diskussionsforum posten (und die „Discussions-To“-Kopfzeile mit dem entsprechenden Link aktualisieren, wie oben beschrieben), Daten und entsprechende Links zu dieser Kopfzeile hinzufügen. Verwenden Sie für jeden Thread das Datum (im Format
dd-mmm-yyy) als verknüpften Text und fügen Sie die URLs als anonyme reST Hyperlinks dazwischen ein, mit Kommas zwischen jedem Posting.Wenn Sie Threads für Ihre PEP am 14. August 2001 und am 3. September 2001 gepostet haben, würde die Kopfzeile „Post-History“ beispielsweise wie folgt aussehen:
Post-History: `14-Aug-2001 <https://www.example.com/thread_1>`__, `03-Sept-2001 <https://www.example.com/thread_2>`__
Sie sollten die neuen Daten/Links hier hinzufügen, sobald Sie einen neuen Diskussionsfaden posten.
- Fügen Sie eine „Replaces“-Kopfzeile hinzu, wenn Ihre PEP eine frühere PEP ersetzt. Der Wert dieser Kopfzeile ist die Nummer der PEP, die Ihre neue PEP ersetzt. Fügen Sie diese Kopfzeile nur hinzu, wenn die ältere PEP in einem „finalen“ Zustand ist, d. h. entweder „Accepted“, „Final“ oder „Rejected“. Sie ersetzen keine ältere offene PEP, wenn Sie eine konkurrierende Idee einreichen.
- Schreiben Sie nun Ihren Abstract, Rationale und andere Inhalte für Ihre PEP und ersetzen Sie diesen ganzen Kauderwelsch durch Ihren eigenen Text. Achten Sie darauf, die unten stehenden Formatrichtlinien einzuhalten, insbesondere das Verbot von Tabulatorzeichen und die Einrückungsanforderungen. Siehe „Vorgeschlagene Abschnitte“ unten für eine Vorlage der einzufügenden Abschnitte.
- Aktualisieren Sie Ihren Fußnoten-Abschnitt und listen Sie alle Fußnoten und nicht-inline verlinkten Ziele auf, auf die im Text verwiesen wird.
- Führen Sie
./build.pyaus, um sicherzustellen, dass die PEP fehlerfrei gerendert wird, und prüfen Sie, ob die Ausgabe inbuild/pep-NNNN.htmlso aussieht, wie Sie es sich vorstellen. - Erstellen Sie einen Pull-Request für das PEPs-Repository.
Zur Referenz sind hier alle möglichen Kopfzeilenfelder aufgeführt (alles in Klammern sollte entweder ersetzt werden oder das Feld sollte entfernt werden, wenn es mit einem Sternchen (*) als optional gekennzeichnet ist und nicht auf Ihre PEP zutrifft)
PEP: [NNN]
Title: [...]
Author: [Full Name <email at example.com>]
Sponsor: *[Full Name <email at example.com>]
PEP-Delegate:
Discussions-To: [URL]
Status: Draft
Type: [Standards Track | Informational | Process]
Topic: *[Governance | Packaging | Release | Typing]
Requires: *[NNN]
Created: [DD-MMM-YYYY]
Python-Version: *[M.N]
Post-History: [`DD-MMM-YYYY <URL>`__]
Replaces: *[NNN]
Superseded-By: *[NNN]
Resolution:
Anforderungen an die reStructuredText-Formatierung von PEPs
Das Folgende ist eine PEP-spezifische Zusammenfassung der reStructuredText-Syntax. Der Einfachheit und Kürze halber sind viele Details weggelassen. Weitere Details finden Sie unter Ressourcen unten. Literalblöcke (in denen keine Markup-Verarbeitung stattfindet) werden hier zur Veranschaulichung der Klartext-Markup verwendet.
Allgemein
Zeilen sollten normalerweise nicht über Spalte 79 hinausragen, mit Ausnahme von URLs und ähnlichen Umständen. Tabulatorzeichen dürfen niemals im Dokument vorkommen.
Abschnittsüberschriften
PEP-Überschriften müssen in Spalte Null beginnen und der erste Buchstabe jedes Wortes muss großgeschrieben werden, wie in Buchtiteln. Akronyme sollten in Großbuchstaben geschrieben werden. Abschnittstitel müssen mit einer Unterstreichung, einem einzeln wiederholten Satzzeichen, versehen sein, die in Spalte Null beginnt und sich mindestens bis zum rechten Rand des Titeltextes erstreckt (mindestens 4 Zeichen). Erstklassige Abschnittsüberschriften werden mit „=“ (Gleichheitszeichen), zweitklassige mit „-“ (Bindestriche) und drittklassige mit „’“ (einfache Anführungszeichen oder Apostrophe) unterstrichen. Zum Beispiel:
First-Level Title
=================
Second-Level Title
------------------
Third-Level Title
'''''''''''''''''
Wenn es mehr als drei Ebenen von Abschnitten in Ihrer PEP gibt, können Sie über- und unterstrichene Titel für die erste und zweite Ebene wie folgt einfügen:
============================
First-Level Title (optional)
============================
-----------------------------
Second-Level Title (optional)
-----------------------------
Third-Level Title
=================
Fourth-Level Title
------------------
Fifth-Level Title
'''''''''''''''''
Sie sollten nicht mehr als fünf Ebenen von Abschnitten in Ihrer PEP haben. Wenn doch, sollten Sie überlegen, sie neu zu schreiben.
Sie müssen zwei Leerzeilen zwischen der letzten Zeile des Abschnittskörpers und der nächsten Abschnittsüberschrift verwenden. Wenn eine Unterabschnittsüberschrift unmittelbar auf eine Abschnittsüberschrift folgt, ist eine einzige Leerzeile dazwischen ausreichend.
Der Text jedes Abschnitts wird normalerweise nicht eingerückt, obwohl einige Konstrukte Einrückungen verwenden, wie unten beschrieben. Leerzeilen werden verwendet, um Konstrukte zu trennen.
Absätze
Absätze sind linksbündige Textblöcke, die durch Leerzeilen getrennt sind. Absätze sind nicht eingerückt, es sei denn, sie sind Teil eines eingerückten Konstrukts (wie z. B. eines Blockzitats oder eines Listenelements).
Inline-Markup
Textteile innerhalb von Absätzen und anderen Textblöcken können formatiert werden. Zum Beispiel:
Text may be marked as *emphasized* (single asterisk markup,
typically shown in italics) or **strongly emphasized** (double
asterisks, typically boldface). ``Inline literals`` (using double
backquotes) are typically rendered in a monospaced typeface. No
further markup recognition is done within the double backquotes,
so they're safe for any kind of code snippets.
Blockzitate
Blockzitate bestehen aus eingerückten Bodenelementen. Zum Beispiel:
This is a paragraph.
This is a block quote.
A block quote may contain many paragraphs.
Blockzitate werden verwendet, um erweiterte Passagen aus anderen Quellen zu zitieren. Blockzitate können in andere Bodenelemente verschachtelt werden. Verwenden Sie 4 Leerzeichen pro Einrückungsebene.
Literalblöcke
Literalblöcke werden für Codebeispiele und andere vorformatierte Texte verwendet. Um einen Literalblock anzuzeigen, stellen Sie den eingerückten Textblock mit „::“ (zwei Doppelpunkte) voran oder verwenden Sie die Direktive .. code-block::. Rücken Sie den Textblock um 4 Leerzeichen ein; der Literalblock dauert bis zum Ende der Einrückung. Zum Beispiel:
This is a typical paragraph. A literal block follows.
::
for a in [5, 4, 3, 2, 1]: # this is program code, shown as-is
print(a)
print("it's...")
„::“ wird auch am Ende jedes Absatzes erkannt; wenn er nicht unmittelbar von Leerzeichen vorangestellt wird, bleibt ein Doppelpunkt in der endgültigen Ausgabe sichtbar
This is an example::
Literal block
Standardmäßig werden Literalblöcke als Python-Code mit Syntax-Hervorhebung versehen. Für bestimmte Blöcke, die Code oder Daten in anderen Sprachen/Formaten enthalten, verwenden Sie die Direktive .. code-block:: language und ersetzen Sie „language“ durch den „Kurznamen“ des entsprechenden Pygments Lexers (oder text, um die Hervorhebung zu deaktivieren). Zum Beispiel:
.. code-block:: rst
An example of the ``rst`` lexer (i.e. *reStructuredText*).
Für PEPs, die hauptsächlich Literalblöcke einer bestimmten Sprache enthalten, verwenden Sie die Direktive .. highlight:: language mit der entsprechenden language am Anfang des PEP-Textes (unter den Kopfzeilen und über dem Abstract). Alle Literalblöcke werden dann als diese Sprache behandelt, es sei denn, sie werden in der spezifischen .. code-block-Direktive anders angegeben. Zum Beispiel:
.. highlight:: c
Abstract
========
Here's some C code::
printf("Hello, World!\n");
Listen
Aufzählungspunkte beginnen mit einem der Zeichen „-“, „*“ oder „+“ (Bindestrich, Sternchen oder Pluszeichen), gefolgt von Leerzeichen und dem Listenelementtext. Der Text von Listenelementen muss linksbündig und relativ zum Aufzählungspunkt eingerückt sein; der Text unmittelbar nach dem Aufzählungspunkt bestimmt die Einrückung. Zum Beispiel:
This paragraph is followed by a list.
* This is the first bullet list item. The blank line above the
first list item is required; blank lines between list items
(such as below this paragraph) are optional.
* This is the first paragraph in the second item in the list.
This is the second paragraph in the second item in the list.
The blank line above this paragraph is required. The left edge
of this paragraph lines up with the paragraph above, both
indented relative to the bullet.
- This is a sublist. The bullet lines up with the left edge of
the text blocks above. A sublist is a new list so requires a
blank line above and below.
* This is the third item of the main list.
This paragraph is not part of the list.
Aufgezählte (nummerierte) Listenelemente sind ähnlich, verwenden aber einen Aufzähler anstelle eines Aufzählungspunkts. Aufzähler sind Zahlen (1, 2, 3, …), Buchstaben (A, B, C, …; groß oder klein) oder römische Ziffern (i, ii, iii, iv, …; groß oder klein), formatiert mit einem Punkt-Suffix („1.“, „2.“), Klammern („(1)“, „(2)“) oder einem rechten Klammer-Suffix („1)“, „2)“). Zum Beispiel:
1. As with bullet list items, the left edge of paragraphs must
align.
2. Each list item may contain multiple paragraphs, sublists, etc.
This is the second paragraph of the second list item.
a) Enumerated lists may be nested.
b) Blank lines may be omitted between list items.
Definitionslisten werden wie folgt geschrieben:
what
Definition lists associate a term with a definition.
how
The term is a one-line phrase, and the definition is one
or more paragraphs or body elements, indented relative to
the term.
Tabellen
Einfache Tabellen sind einfach und kompakt
===== ===== =======
A B A and B
===== ===== =======
False False False
True False False
False True False
True True True
===== ===== =======
Eine Tabelle muss mindestens zwei Spalten haben (um sie von Abschnittsüberschriften zu unterscheiden). Spaltenspanns werden mit Bindestrich-Unterstreichungen angezeigt („Inputs“ überspannt die ersten beiden Spalten)
===== ===== ======
Inputs Output
------------ ------
A B A or B
===== ===== ======
False False False
True False True
False True True
True True True
===== ===== ======
Text in einer Zelle der ersten Spalte beginnt eine neue Zeile. Kein Text in der ersten Spalte bedeutet eine Fortsetzungszeile; die restlichen Zellen können mehrere Zeilen umfassen. Zum Beispiel:
===== =========================
col 1 col 2
===== =========================
1 Second column of row 1.
2 Second column of row 2.
Second line of paragraph.
3 - Second column of row 3.
- Second item in bullet
list (row 3, column 2).
===== =========================
Hyperlinks
Wenn Sie in einem PEP-Text auf eine externe Webseite verweisen, sollten Sie den Titel der Seite oder eine geeignete Beschreibung im Text angeben, entweder mit einem Inline-Hyperlink oder einem separaten expliziten Ziel mit der URL. Fügen Sie keine bloßen URLs in den Text der PEP ein und verwenden Sie, wo immer möglich, HTTPS-Links.
Hyperlink-Referenzen verwenden Rückwärtszeichen (Backticks) und einen nachgestellten Unterstrich, um den Referenztext zu markieren; Rückwärtszeichen sind optional, wenn der Referenztext ein einzelnes Wort ist. Um beispielsweise auf ein Hyperlink-Ziel namens Python website zu verweisen, würden Sie schreiben:
In this paragraph, we refer to the `Python website`_.
Wenn Sie einen Link nur einmal verwenden möchten und ihn inline mit dem Text definieren möchten, fügen Sie den Link in spitze Klammern (<>) nach dem zu verlinkenden Text, aber vor dem schließenden Rückwärtszeichen ein, mit einem Leerzeichen zwischen dem Text und dem öffnenden Rückwärtszeichen. Sie sollten auch einen doppelten Unterstrich nach dem schließenden Rückwärtszeichen anstelle eines einzelnen verwenden, was ihn zu einer anonymen Referenz macht, um Konflikte mit anderen Zielnamen zu vermeiden. Zum Beispiel:
Visit the `website <https://pythonlang.de/>`__ for more.
Wenn Sie einen Link an mehreren Stellen mit unterschiedlichem Linktext verwenden möchten oder sicherstellen möchten, dass Sie Ihre Link-Zielnamen nicht ändern müssen, wenn Sie den Linktext ändern, fügen Sie den Zielnamen in spitze Klammern hinter dem zu verlinkenden Text ein, mit einem Unterstrich nach dem Zielnamen, aber vor der schließenden spitzen Klammer (andernfalls funktioniert der Link nicht). Zum Beispiel:
For further examples, see the `documentation <pydocs_>`_.
Ein explizites Ziel liefert die URL. Platzieren Sie Ziele im Abschnitt Fußnoten am Ende der PEP oder unmittelbar nach dem Absatz mit der Referenz. Hyperlink-Ziele beginnen mit zwei Punkten und einem Leerzeichen (dem „explicit markup start“), gefolgt von einem führenden Unterstrich, dem Referenztext, einem Doppelpunkt und der URL.
.. _Python web site: https://pythonlang.de/
.. _pydocs: https://docs.pythonlang.de/
Der Referenztext und der Zieltext müssen übereinstimmen (obwohl der Abgleich Groß- und Kleinschreibung ignoriert und Unterschiede in Leerzeichen ignoriert). Beachten Sie, dass der Unterstrich dem Referenztext folgt, aber dem Zieltext vorausgeht. Wenn Sie sich den Unterstrich als Pfeil nach rechts vorstellen, zeigt er vom Referenz und zum Ziel.
Interne und PEP/RFC-Links
Derselbe Mechanismus wie für Hyperlinks kann für interne Referenzen verwendet werden. Jeder eindeutige Abschnittstitel definiert implizit ein internes Hyperlink-Ziel. Wir können wie folgt auf den Abstract-Abschnitt verweisen:
Here is a hyperlink reference to the `Abstract`_ section. The
backquotes are optional since the reference text is a single word;
we can also just write: Abstract_.
Um auf PEPs oder RFCs zu verweisen, verwenden Sie immer die Rollen :pep: und :rfc:, niemals fest codierte URLs. Zum Beispiel:
See :pep:`1` for more information on how to write a PEP,
and :pep:`the Hyperlink section of PEP 12 <12#hyperlinks>` for how to link.
Dies wird wie folgt gerendert:
Siehe PEP 1 für weitere Informationen zum Verfassen einer PEP und den Abschnitt Hyperlinks in PEP 12 für die Verlinkung.
PEP-Nummern im Text werden niemals aufgefüllt, und es gibt ein Leerzeichen (kein Bindestrich) zwischen „PEP“ oder „RFC“ und der Nummer; die obigen Rollen kümmern sich darum für Sie.
Fußnoten
Fußnotenreferenzen bestehen aus einer linken eckigen Klammer, einem Label, einer rechten eckigen Klammer und einem nachgestellten Unterstrich. Anstelle einer Nummer verwenden Sie ein Label der Form „#word“, wobei „word“ eine mnemotechnische Bezeichnung aus alphanumerischen Zeichen plus internen Bindestrichen, Unterstrichen und Punkten ist (keine Leerzeichen oder andere Zeichen sind erlaubt). Zum Beispiel:
Refer to The TeXbook [#TeXbook]_ for more information.
was wie folgt gerendert wird:
Beachten Sie The TeXbook [1] für weitere Informationen.
Leerzeichen müssen der Fußnotenreferenz vorangestellt werden. Lassen Sie ein Leerzeichen zwischen der Fußnotenreferenz und dem vorhergehenden Wort.
Verwenden Sie Fußnoten für zusätzliche Anmerkungen, Erklärungen und Vorbehalte sowie für Verweise auf Bücher und andere Online-nicht ohne weiteres verfügbare Quellen. Native reST-Hyperlink-Ziele oder Inline-Hyperlinks im Text sollten Fußnoten für die Einbindung von URLs zu Online-Ressourcen vorgezogen werden.
Fußnoten beginnen mit „.. “ (dem explicit markup start), gefolgt vom Fußnotenmarker (keine Unterstriche), gefolgt vom Fußnotentext. Zum Beispiel:
.. [#TeXbook] Donald Knuth's *The TeXbook*, pages 195 and 196.
was wie folgt gerendert wird:
Fußnoten und Fußnotenreferenzen werden automatisch nummeriert, und die Nummern werden immer übereinstimmen.
Bilder
Wenn Ihre PEP eine Grafik oder eine andere Grafik enthält, können Sie sie mit der Direktive image in der verarbeiteten Ausgabe einfügen:
.. image:: diagram.png
Jedes browserfreundliche Grafikformat ist möglich; PNG sollte für Grafiken, JPEG für Fotos und GIF für Animationen bevorzugt werden. Derzeit müssen SVG aufgrund von Kompatibilitätsproblemen mit dem PEP-Build-System vermieden werden.
Für Barrierefreiheit und Leser des Quelltextes sollten Sie eine Beschreibung des Bildes und alle darin enthaltenen wichtigen Informationen mit der Option :alt: zur Direktive image aufnehmen:
.. image:: dataflow.png
:alt: Data flows from the input module, through the "black box"
module, and finally into (and through) the output module.
Maskierungsmechanismus
reStructuredText verwendet Backslashes (”\“), um die besondere Bedeutung von Markup-Zeichen zu überschreiben und die tatsächlichen Zeichen selbst zu erhalten. Um einen wörtlichen Backslash zu erhalten, verwenden Sie einen maskierten Backslash (”\\“). Es gibt zwei Kontexte, in denen Backslashes keine besondere Bedeutung haben: Literalblöcke und Inline-Literale (siehe Inline-Markup oben). In diesen Kontexten findet keine Markup-Erkennung statt, und ein einzelner Backslash stellt einen wörtlichen Backslash dar, ohne dass er verdoppelt werden muss.
Wenn Sie feststellen, dass Sie einen Backslash in Ihrem Text verwenden müssen, erwägen Sie stattdessen die Verwendung von Inline-Literalen oder eines Literalblocks.
Intersphinx
Sie können Intersphinx-Referenzen zu anderen Sphinx-Seiten wie der Python-Dokumentation packaging.python.org und typing.python.org verwenden, um Seiten, Abschnitte und Python/C-Objekte einfach zu verknüpfen.
Um beispielsweise einen Link zu einem Abschnitt der Typing-Dokumentation zu erstellen, würden Sie Folgendes schreiben:
:ref:`type expression <typing:type-expression>`
Kanonische Dokumentation
Wie in PEP 1 beschrieben, gelten PEPs nach der Kennzeichnung als „Final“ als historische Dokumente, und ihre kanonische Dokumentation/Spezifikation sollte woanders hin verschoben werden. Um dies anzuzeigen, verwenden Sie die Direktive canonical-doc oder eine geeignete Unterklasse
canonical-pypa-specfür Packaging-Standardscanonical-typing-specfür Typing-Standards
Fügen Sie die Direktive zwischen den Kopfzeilen und dem ersten Abschnitt der PEP ein (typischerweise der Abstract) und übergeben Sie als Argument eine Intersphinx-Referenz der kanonischen Doku/Spezifikation (oder, wenn das Ziel nicht auf einer Sphinx-Seite ist, einen reST-Hyperlink).
Um beispielsweise ein Banner zu erstellen, das auf die sqlite3-Dokumentation verweist, würden Sie Folgendes schreiben:
.. canonical-doc:: :mod:`python:sqlite3`
Dies würde das Banner generieren:
Oder für eine PyPA-Spezifikation, wie die Core-Metadaten-Spezifikationen, würden Sie verwenden:
.. canonical-pypa-spec:: :ref:`packaging:core-metadata`
was wie folgt gerendert wird:
Für eine Typing-PEP, die keine neuen Laufzeitobjekte einführt, könnten Sie etwas wie das erste dieser verwenden; für eine Typing-PEP, die ein neues Objekt zum Typing-Modul zur Laufzeit einführt, könnten Sie das zweite verwenden:
.. canonical-typing-spec:: :ref:`typing:packaging-typed-libraries`
.. canonical-typing-spec:: :ref:`typing:literal-types` and
:py:data:`typing.Literal`
Die beiden werden wie folgt gerendert:
Das Argument akzeptiert beliebiges reST, sodass Sie mehrere verknüpfte Dokumente/Spezifikationen einfügen und ihnen beliebige Namen geben können, und Sie können auch Direktiveninhalte einfügen, die in den Text eingefügt werden. Das folgende fortgeschrittene Beispiel:
.. canonical-doc:: the :ref:`python:sqlite3-connection-objects` and :exc:`python:~sqlite3.DataError` docs
Also, see the :ref:`Data Persistence docs <persistence>` for other examples.
würde wie folgt gerendert werden:
Zu vermeidende Gewohnheiten
Viele Programmierer, die mit TeX vertraut sind, schreiben oft Anführungszeichen so:
`single-quoted' or ``double-quoted''
Rückwärtszeichen (Backticks) sind in reStructuredText wichtig, daher sollte diese Praxis vermieden werden. Verwenden Sie für normalen Text gewöhnliche ‚einfache Anführungszeichen‘ oder „doppelte Anführungszeichen“. Für Inline-Literaltext (siehe Inline-Markup oben) verwenden Sie doppelte Rückwärtszeichen (Double-Backticks):
``literal text: in here, anything goes!``
Vorgeschlagene Abschnitte
Verschiedene Abschnitte werden häufig in PEPs gefunden und sind in PEP 1 beschrieben. Diese Abschnitte werden hier zur Bequemlichkeit bereitgestellt.
PEP: <REQUIRED: pep number>
Title: <REQUIRED: pep title>
Author: <REQUIRED: list of authors' names and optionally, email addrs>
Sponsor: <name of sponsor>
PEP-Delegate: <PEP delegate's name>
Discussions-To: Pending
Status: <REQUIRED: Draft | Active | Accepted | Provisional | Deferred | Rejected | Withdrawn | Final | Superseded>
Type: <REQUIRED: Standards Track | Informational | Process>
Topic: <Governance | Packaging | Release | Typing>
Requires: <pep numbers>
Created: <date created on, in dd-mmm-yyyy format>
Python-Version: <version number>
Post-History: <REQUIRED: dates, in dd-mmm-yyyy format, and corresponding links to PEP discussion threads>
Replaces: <pep number>
Superseded-By: <pep number>
Resolution: <url>
Abstract
========
[A short (~200 word) description of the technical issue being addressed.]
Motivation
==========
[Clearly explain why the existing language specification is inadequate to address the problem that the PEP solves.]
Rationale
=========
[Describe why particular design decisions were made.]
Specification
=============
[Describe the syntax and semantics of any new language feature.]
Backwards Compatibility
=======================
[Describe potential impact and severity on pre-existing code.]
Security Implications
=====================
[How could a malicious user take advantage of this new feature?]
How to Teach This
=================
[How to teach users, new and experienced, how to apply the PEP to their work.]
Reference Implementation
========================
[Link to any existing implementation and details about its state, e.g. proof-of-concept.]
Rejected Ideas
==============
[Why certain ideas that were brought while discussing this PEP were not ultimately pursued.]
Open Issues
===========
[Any points that are still being decided/discussed.]
Acknowledgements
================
[Thank anyone who has helped with the PEP.]
Footnotes
=========
[A collection of footnotes cited in the PEP, and a place to list non-inline hyperlink targets.]
Copyright
=========
This document is placed in the public domain or under the
CC0-1.0-Universal license, whichever is more permissive.
Ressourcen
Viele andere Konstrukte und Variationen sind möglich, sowohl die, die vom grundlegenden Docutils unterstützt werden, als auch die Erweiterungen, die von Sphinx hinzugefügt wurden.
Eine Reihe von Ressourcen steht zur Verfügung, um mehr darüber zu erfahren:
- Sphinx ReStructuredText Primer, eine sanfte, aber ziemlich detaillierte Einführung.
- reStructuredText Markup Specification, die maßgebliche, umfassende Dokumentation der grundlegenden reST-Syntax, Direktiven und mehr.
- Sphinx Roles und Sphinx Directives, die erweiterten Konstrukte, die vom Sphinx-Dokumentationssystem hinzugefügt wurden, das zur Wiedergabe der PEPs in HTML verwendet wird.
Wenn Sie Fragen haben oder Hilfe beim Schreiben einer PEP benötigen, die von den oben genannten Ressourcen nicht abgedeckt wird, pingen Sie @python/pep-editors auf GitHub an, eröffnen Sie ein Issue im PEPs-Repository oder wenden Sie sich direkt an einen PEP-Editor.
Urheberrecht
Dieses Dokument wird in die Public Domain oder unter die CC0-1.0-Universal-Lizenz gestellt, je nachdem, welche Lizenz permissiver ist.
Quelle: https://github.com/python/peps/blob/main/peps/pep-0012.rst
Zuletzt geändert: 2025-04-10 16:17:29 GMT
Kommentare
Ein Kommentar ist ein eingerückter Block beliebigen Textes, der unmittelbar auf einen expliziten Markup-Start folgt: zwei Punkte und Leerzeichen. Lassen Sie die „..“ in einer eigenen Zeile, um sicherzustellen, dass der Kommentar nicht falsch als ein anderer expliziter Markup-Konstrukt interpretiert wird. Kommentare sind im verarbeiteten Dokument nicht sichtbar. Zum Beispiel: