-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PEP 12: Recommend and explain native RST hyperlinks (versus footnotes) #2302
Changes from all commits
6f583d2
b7a0aaa
42e7d3b
bdee439
be51524
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -12,7 +12,7 @@ Post-History: 30-Aug-2002 | |
|
||
.. note:: | ||
For those who have written a PEP before, there is a template_ | ||
(which is included as a file in the PEPs repository). | ||
(which is included as a file in the `PEPs repository`_). | ||
|
||
Abstract | ||
======== | ||
|
@@ -26,8 +26,9 @@ Note: if you are reading this PEP via the web, you should first grab | |
the text (reStructuredText) source of this PEP in order to complete | ||
the steps below. **DO NOT USE THE HTML FILE AS YOUR TEMPLATE!** | ||
|
||
The source for this (or any) PEP can be found in the PEPs repository, | ||
viewable on the web at https://github.com/python/peps/ . | ||
The source for this (or any) PEP can be found in the | ||
`PEPs repository <https://github.com/python/peps/>`_, | ||
as well as via a link at the bottom of each PEP. | ||
|
||
|
||
Rationale | ||
|
@@ -137,13 +138,8 @@ directions below. | |
prohibition of tab characters and the indentation requirements. | ||
See "Suggested Sections" below for a template of sections to include. | ||
|
||
- Update your References and Copyright section. Usually you'll place | ||
your PEP into the public domain, in which case just leave the | ||
Copyright section alone. Alternatively, you can use the `Open | ||
Publication License`__, but public domain is still strongly | ||
preferred. | ||
|
||
__ http://www.opencontent.org/openpub/ | ||
Comment on lines
-140
to
-146
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I only skimmed #2130, but I didn't see a copyright discussion -- there are a few PEPs licenced under the OPL (437, 483, 551, 578, 3145). For some authors there may be issues with PD/CC0, so noting the option exists may be useful? Personally I am fine with PD (having released the code in this repo to it) -- and even better if I missed the dicussion & all good, but better safe than sorry & all that! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. An option doesn't exist; all PEPs must be dual-licensed CC0 and "PD" (which is effectively the same as just licensing CC0, which in turn is a public domain declaration) per PEP 1 as implemented in #1117 per the discussion with PSF legal in #123 ; the lack of a corresponding update to PEP 12 was presumably an oversight. The OPL (which itself is an ambiguous acronym, as it could refer to either the Open Content License or the Open Publication License, two different licenses) is an obsolete, ambiguous, incompatible and likely legally flawed license; it would be strongly preferable to get those old PEPs relicensed, but that is entirely out of scope here. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ahh, thanks for the links -- important that this gets updated, then. A |
||
- Update your Footnotes section, listing any footnotes and | ||
non-inline link targets referenced by the text. | ||
|
||
- Leave the Emacs stanza at the end of this file alone, including the | ||
formfeed character ("^L", or ``\f``). | ||
|
@@ -438,43 +434,73 @@ Hyperlinks | |
---------- | ||
|
||
When referencing an external web page in the body of a PEP, you should | ||
include the title of the page in the text, with either an inline | ||
hyperlink reference to the URL or a footnote reference (see | ||
`Footnotes`_ below). Do not include the URL in the body text of the | ||
PEP. | ||
include the title of the page or a suitable description in the text, with | ||
either an inline hyperlink or a separate explicit target with the URL. | ||
Do not include bare URLs in the body text of the PEP, and use HTTPS | ||
links wherever available. | ||
|
||
Hyperlink references use backquotes and a trailing underscore to mark | ||
up the reference text; backquotes are optional if the reference text | ||
is a single word. For example:: | ||
is a single word. For example, to reference a hyperlink target named | ||
``Python website``, you would write: | ||
|
||
.. code-block:: rst | ||
|
||
In this paragraph, we refer to the `Python website`_. | ||
|
||
If you intend to only reference a link once, and want to define it inline | ||
with the text, insert the link into angle brackets (``<>``) after the text | ||
you want to link, but before the closing backtick, with a space between the | ||
text and the opening backtick. You should also use a double-underscore after | ||
the closing backtick instead of a single one, which makes it an anonymous | ||
reference to avoid conflicting with other target names. For example: | ||
Comment on lines
+451
to
+456
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is it worth giving so much detail on how to write a link or to link to the reST docs at https://docutils.sourceforge.io/docs/user/rst/quickref.html#indirect-hyperlink-targets and provide the examples? Same below for the other link styles. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I agree -- I'd suggest most of this section could be replaced with a pointer to the Docutils reference, perhaps excepting not to use raw URLs and to prefer HTTPS. I'd go so far as to remove the examples, too. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. My initial thought as well was just to point to the docutils reference or similar for the details, but:
So, my preference would be to keep it as-is, following the general status quo, and consider offloading the RST syntax details more generally in a potential future PR (after discussion on an issue). But if its overly lengthy, we could slim down some bits, like the rendered form for the different ways of specifying links. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The detailed comments are from a time when we had to teach people how to write reST for a PEP since PEPs predate the format. Since reST is now so old, I don't think it's important long-term. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I see, thanks for the historical background @brettcannon . I agree it would likely be a good idea to slim down the detailed reST syntax descriptions in PEP 12 to just a brief summary and/or any PEP-specific guidance, and link to the relevant docutils/Sphinx guides and documentation for the rest, rather than belaboring the PEP with such details that are described elsewhere. That said, that's a distinct and more expansive change than just updating the existing descriptions of how to use hyperlinks and footnotes (as is the scope of #2130 that this resolves) and something we should probably discuss in a separate issue first to make sure we're all in agreement and decide on a consistent approach to this throughout the PEP before going ahead with it. For now, I've reverted the addition of all the "renders as" example blocks and their associated text for the hyperlinks section, along with an extra paragraph and the explanation and examples of numbered footnotes. I suggest we go ahead and merge this with those changes for now, so the PEP accurately reflects the current recommendations for links/references as agreed on in #2130 (and so I can move ahead with #2266), and I can open a new issue for us to discuss and decide upon the approach to take with PEP 12 moving forward, and implement that once consensus is reached. Does that sound good to you? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. SGTM There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thanks! Opened as #2337 |
||
|
||
In this paragraph, we refer to the `Python web site`_. | ||
.. code-block:: rst | ||
|
||
Visit the `website <https://www.python.org/>`__ for more. | ||
|
||
An explicit target provides the URL. Put targets in a References | ||
section at the end of the PEP, or immediately after the reference. | ||
If you want to use one link multiple places with different linked text, | ||
or want to ensure you don't have to update your link target names when | ||
changing the linked text, include the target name within angle brackets | ||
following the text to link, *with an underscore after the target name | ||
but before the closing angle bracket* (or the link **will not work**). | ||
For example: | ||
|
||
.. code-block:: rst | ||
|
||
For further examples, see the `documentation <pydocs_>`_. | ||
|
||
An explicit target provides the URL. Put targets in the Footnotes section | ||
at the end of the PEP, or immediately after the paragraph with the reference. | ||
Hyperlink targets begin with two periods and a space (the "explicit | ||
markup start"), followed by a leading underscore, the reference text, | ||
a colon, and the URL (absolute or relative):: | ||
a colon, and the URL. | ||
|
||
.. _Python web site: http://www.python.org/ | ||
.. code-block:: rst | ||
|
||
.. _Python web site: https://www.python.org/ | ||
.. _pydocs: https://docs.python.org/ | ||
|
||
The reference text and the target text must match (although the match | ||
is case-insensitive and ignores differences in whitespace). Note that | ||
the underscore trails the reference text but precedes the target text. | ||
If you think of the underscore as a right-pointing arrow, it points | ||
*away* from the reference and *toward* the target. | ||
|
||
The same mechanism can be used for internal references. Every unique | ||
section title implicitly defines an internal hyperlink target. We can | ||
make a link to the Abstract section like this:: | ||
|
||
Internal and PEP/RFC Links | ||
-------------------------- | ||
|
||
The same mechanism as hyperlinks can be used for internal references. | ||
Every unique section title implicitly defines an internal hyperlink target. | ||
We can make a link to the Abstract section like this: | ||
|
||
.. code-block:: rst | ||
|
||
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_. | ||
|
||
Footnotes containing the URLs from external targets will be generated | ||
automatically at the end of the References section of the PEP, along | ||
with footnote references linking the reference text to the footnotes. | ||
|
||
To refer to PEPs or RFCs, always use the ``:pep:`` and ``:rfc:`` roles, | ||
never hardcoded URLs. | ||
For example: | ||
|
@@ -497,47 +523,42 @@ that for you. | |
Footnotes | ||
--------- | ||
|
||
Footnote references consist of a left square bracket, a number, a | ||
right square bracket, and a trailing underscore: | ||
Footnote references consist of a left square bracket, a label, a | ||
right square bracket, and a trailing underscore. | ||
Instead of a number, use a label of the | ||
form "#word", where "word" is a mnemonic consisting of alphanumerics | ||
plus internal hyphens, underscores, and periods (no whitespace or | ||
other characters are allowed). | ||
For example: | ||
|
||
.. code-block:: rst | ||
|
||
This sentence ends with a footnote reference [1]_. | ||
Refer to The TeXbook [#TeXbook]_ for more information. | ||
|
||
which renders as | ||
|
||
Refer to The TeXbook [#TeXbook]_ for more information. | ||
|
||
Whitespace must precede the footnote reference. Leave a space between | ||
the footnote reference and the preceding word. | ||
|
||
Use footnotes for additional notes, explanations and caveats, as well as | ||
for references to books and other sources not readily available online. | ||
Native reST hyperlink targets or inline hyperlinks in the text should be | ||
used in preference to footnotes for including URLs to online resources. | ||
|
||
Footnotes begin with ".. " (the explicit | ||
markup start), followed by the footnote marker (no underscores), | ||
followed by the footnote body. For example: | ||
|
||
.. code-block:: rst | ||
|
||
References | ||
========== | ||
|
||
.. [1] Note that the footnote reference is a numbered one. | ||
|
||
.. [2] Donald Knuth's *The TeXbook*, pages 195 and 196. | ||
|
||
During the course of developing your PEP, you may have to add, remove, | ||
and rearrange footnote references, possibly resulting in mismatched | ||
references, obsolete footnotes, and confusion. Auto-numbered | ||
footnotes allow more freedom. Instead of a number, use a label of the | ||
form "#word", where "word" is a mnemonic consisting of alphanumerics | ||
plus internal hyphens, underscores, and periods (no whitespace or | ||
other characters are allowed). For example: | ||
|
||
.. code-block:: rst | ||
|
||
Refer to The TeXbook [#TeXbook]_ for more information. | ||
.. [#TeXbook] Donald Knuth's *The TeXbook*, pages 195 and 196. | ||
|
||
References | ||
========== | ||
which renders as | ||
|
||
.. [#TeXbook] Donald Knuth's *The TeXbook*, pages 195 and 196. | ||
|
||
|
||
Footnotes and footnote references will be numbered automatically, and | ||
the numbers will always match. | ||
|
||
|
@@ -631,27 +652,27 @@ thoroughness, please see: | |
|
||
* `A ReStructuredText Primer`__, a gentle introduction. | ||
|
||
__ http://docutils.sourceforge.net/docs/rst/quickstart.html | ||
__ https://docutils.sourceforge.io/docs/user/rst/quickstart.html | ||
|
||
* `Quick reStructuredText`__, a users' quick reference. | ||
|
||
__ http://docutils.sourceforge.net/docs/rst/quickref.html | ||
__ https://docutils.sourceforge.io/docs/user/rst/quickref.html | ||
|
||
* `reStructuredText Markup Specification`__, the final authority. | ||
|
||
__ http://docutils.sourceforge.net/spec/rst/reStructuredText.html | ||
__ https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html | ||
|
||
The processing of reStructuredText PEPs is done using Docutils_. If | ||
you have a question or require assistance with reStructuredText or | ||
Docutils, please `post a message`_ to the `Docutils-users mailing | ||
list`_. The `Docutils project web site`_ has more information. | ||
|
||
.. _Docutils: | ||
.. _Docutils project web site: http://docutils.sourceforge.net/ | ||
.. _Docutils project web site: https://docutils.sourceforge.io/ | ||
.. _post a message: | ||
mailto:[email protected]?subject=PEPs | ||
.. _Docutils-users mailing list: | ||
http://docutils.sf.net/docs/user/mailing-lists.html#docutils-users | ||
https://docutils.sourceforge.io/docs/user/mailing-lists.html#docutils-users | ||
|
||
|
||
Copyright | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you also link the one on line 15 please?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess so, though it is a bit out of scope here.