Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python Enhancement Proposals

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

Inhaltsverzeichnis

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 Datei pep-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-yyyy sein, wobei mmm die 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.py aus, um sicherzustellen, dass die PEP fehlerfrei gerendert wird, und prüfen Sie, ob die Ausgabe in build/pep-NNNN.html so 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).
=====  =========================

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.

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:

..
   This section should be updated in the final PEP.
   Ensure the date is accurate.

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-spec für Packaging-Standards
  • canonical-typing-spec fü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:

Wichtig

Diese PEP ist ein historisches Dokument. Die aktuelle, kanonische Dokumentation finden Sie nun unter sqlite3.

×

Siehe PEP 1, um Änderungen vorzuschlagen.

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:

Wichtig

Dieses PEP ist ein historisches Dokument. Die aktuelle, kanonische Spezifikation, Kernmetadatenspezifikationen, wird auf der PyPA Specs-Seite gepflegt.

×

Siehe den PyPA-Spezifikations-Update-Prozess, um Änderungen vorzuschlagen.

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:

Wichtig

Diese PEP ist ein historisches Dokument: siehe Typinformationen in Bibliotheken für aktuelle Spezifikationen und Dokumentation. Kanonische Typing-Spezifikationen werden auf der Seite typing specs site gepflegt; das Laufzeit-Typing-Verhalten wird in der CPython-Dokumentation beschrieben.

×

Siehe den Prozess zur Aktualisierung der Typ-Spezifikation, um Änderungen an der Typ-Spezifikation vorzuschlagen.

Wichtig

Diese PEP ist ein historisches Dokument: siehe Literaltypen und typing.Literal für aktuelle Spezifikationen und Dokumentation. Kanonische Typing-Spezifikationen werden auf der Seite typing specs site gepflegt; das Laufzeit-Typing-Verhalten wird in der CPython-Dokumentation beschrieben.

×

Siehe den Prozess zur Aktualisierung der Typ-Spezifikation, um Änderungen an der Typ-Spezifikation vorzuschlagen.

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:

Wichtig

Diese PEP ist ein historisches Dokument. Die aktuelle, kanonische Dokumentation finden Sie nun unter den Connection-Objekten und sqlite3.DataError Docs.

×

Siehe auch die Data Persistence Docs für weitere Beispiele.

Siehe PEP 1, um Änderungen vorzuschlagen.

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:

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.


Quelle: https://github.com/python/peps/blob/main/peps/pep-0012.rst

Zuletzt geändert: 2025-04-10 16:17:29 GMT