diff --git a/conf.py b/conf.py
index 825cfb5b5..df5805f84 100644
--- a/conf.py
+++ b/conf.py
@@ -178,6 +178,7 @@
# https://www.sphinx-doc.org/en/master/usage/extensions/extlinks.html
extlinks = {
"github": ("https://github.com/%s/", "%s"),
+ "pypi": ("https://pypi.org/project/%s/", "%s"),
}
# sphinxext-opengraph config
diff --git a/core-developers/committing.rst b/core-developers/committing.rst
index 3b2a10302..3206d991a 100644
--- a/core-developers/committing.rst
+++ b/core-developers/committing.rst
@@ -125,8 +125,7 @@ How to add a NEWS entry
``NEWS`` entries go into the ``Misc/NEWS.d`` directory as individual files. The
``NEWS`` entry can be created by using `blurb-it `_,
-or the `blurb `_ tool and its ``blurb add``
-command.
+or the :pypi:`blurb` tool and its ``blurb add`` command.
If you are unable to use the tool, then you can create the ``NEWS`` entry file
manually. The ``Misc/NEWS.d`` directory contains a sub-directory named
diff --git a/developer-workflow/communication-channels.rst b/developer-workflow/communication-channels.rst
index 12e14889e..0f7970fad 100644
--- a/developer-workflow/communication-channels.rst
+++ b/developer-workflow/communication-channels.rst
@@ -249,11 +249,11 @@ order to make open source pleasant for everyone involved.
Additional repositories
=======================
-`Python Core Workflow`_ hosts the codebase for tools such as `blurb`_.
+`Python Core Workflow`_ hosts the codebase for tools such as :pypi:`blurb`.
Other core workflow tools are:
-* `cherry_picker`_ (`PyPI`_)
+* `cherry_picker`_ (:pypi:`PyPI `)
* `bedevere`_
* `blurb_it`_
* `miss-islington`_
@@ -264,9 +264,7 @@ Python `Performance Benchmark`_ project is intended to be an authoritative
source of benchmarks for all Python implementations.
.. _Python Core Workflow: https://github.com/python/core-workflow
-.. _blurb: https://pypi.org/project/blurb
.. _cherry_picker: https://github.com/python/cherry-picker
-.. _PyPI: https://pypi.org/project/cherry_picker/
.. _bedevere: https://github.com/python/bedevere
.. _blurb_it: https://github.com/python/blurb_it
.. _miss-islington: https://github.com/python/miss-islington
diff --git a/documentation/markup.rst b/documentation/markup.rst
index 830493a31..2dec9d06b 100644
--- a/documentation/markup.rst
+++ b/documentation/markup.rst
@@ -732,9 +732,12 @@ where simpler markup should be used:
In addition, the CPython documentation defines a few custom roles:
-* ``:gh:`ID```: creates a link to a GitHub issue.
-* ``:issue:`ID```: creates a link to a bugs.python.com issue.
-* ``:source:`PATH```: creates a link to a source file on GitHub.
+* ``:cve:`YYYY-NNNNN```: link to a Common Vulnerabilities and Exposures entry.
+* ``:cwe:`NNN```: link to a Common Weakness Enumeration entry.
+* ``:gh:`ID```: link to a GitHub issue.
+* ``:issue:`ID```: link to a bugs.python.com issue.
+* ``:pypi:`NAME```: link to a project on PyPI.
+* ``:source:`PATH```: link to a source file on GitHub.
There are some additional facilities that make cross-referencing roles more
versatile:
diff --git a/documentation/translating.rst b/documentation/translating.rst
index 2d8cb86d4..8abb69fbb 100644
--- a/documentation/translating.rst
+++ b/documentation/translating.rst
@@ -209,8 +209,7 @@ Which version of the Python documentation should be translated?
---------------------------------------------------------------
Consensus is to work on current stable. You can then propagate your
-translation from one branch to another using `pomerge
-`__.
+translation from one branch to another using :pypi:`pomerge`.
Are there some tools to help in managing the repo?
@@ -218,14 +217,12 @@ Are there some tools to help in managing the repo?
Here's what we're using:
-- `pomerge `__ to propagate translations
- from one file to others.
-- `pospell `__ to check for typos in ``.po`` files.
-- `powrap `__ to rewrap the ``.po`` files
+- :pypi:`pomerge` to propagate translations from one file to others.
+- :pypi:`pospell` to check for typos in ``.po`` files.
+- :pypi:`powrap` to rewrap the ``.po`` files
before committing. This helps keep Git diffs short.
-- `potodo `__ to list what needs to be translated.
-- `sphinx-lint `__ to validate reST syntax in
- translation files.
+- :pypi:`potodo` to list what needs to be translated.
+- :pypi:`sphinx-lint` to validate reST syntax in translation files.
How is a coordinator elected?
diff --git a/getting-started/pull-request-lifecycle.rst b/getting-started/pull-request-lifecycle.rst
index 225b352be..2381211ab 100644
--- a/getting-started/pull-request-lifecycle.rst
+++ b/getting-started/pull-request-lifecycle.rst
@@ -266,7 +266,7 @@ The automated patch checklist runs through:
* Has the test suite been updated?
* Has an entry under ``Misc/NEWS.d/next`` been added?
(using `blurb-it `_,
- or the `blurb `_ tool)
+ or the :pypi:`blurb` tool)
* Has ``Misc/ACKS`` been updated?
* Has ``configure`` been regenerated, if necessary?
* Has ``pyconfig.h.in`` been regenerated, if necessary?
diff --git a/index.rst b/index.rst
index fb901ddbd..8b060fb87 100644
--- a/index.rst
+++ b/index.rst
@@ -124,7 +124,7 @@ instructions please see the :ref:`setup guide `.
8. Add a News entry into the ``Misc/NEWS.d`` directory as individual file. The
news entry can be created by using `blurb-it `_,
- or the `blurb `_ tool and its ``blurb add``
+ or the :pypi:`blurb` tool and its ``blurb add``
command. Please read more about ``blurb`` in its
`repository `_.