Skip to content

Commit c339d39

Browse files
encukouAA-Turnerhugovk
committed
pythongh-121277: Allow .. versionadded:: next in docs (pythonGH-121278)
Make `versionchanged:: next`` expand to current (unreleased) version. When a new CPython release is cut, the release manager will replace all such occurences of "next" with the just-released version. (See the issue for release-tools and devguide PRs.) Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> (cherry picked from commit 7d24ea9)
1 parent 80de976 commit c339d39

2 files changed

Lines changed: 24 additions & 2 deletions

File tree

Doc/tools/extensions/pyspecific.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,22 @@ def run(self):
259259
return PyMethod.run(self)
260260

261261

262-
# Support for documenting version of removal in deprecations
262+
# Support for documenting version of changes, additions, deprecations
263+
264+
def expand_version_arg(argument, release):
265+
"""Expand "next" to the current version"""
266+
if argument == 'next':
267+
return sphinx_gettext('{} (unreleased)').format(release)
268+
return argument
269+
270+
271+
class PyVersionChange(VersionChange):
272+
def run(self):
273+
# Replace the 'next' special token with the current development version
274+
self.arguments[0] = expand_version_arg(self.arguments[0],
275+
self.config.release)
276+
return super().run()
277+
263278

264279
class DeprecatedRemoved(VersionChange):
265280
required_arguments = 2
@@ -270,7 +285,8 @@ class DeprecatedRemoved(VersionChange):
270285
def run(self):
271286
# Replace the first two arguments (deprecated version and removed version)
272287
# with a single tuple of both versions.
273-
version_deprecated = self.arguments[0]
288+
version_deprecated = expand_version_arg(self.arguments[0],
289+
self.config.release)
274290
version_removed = self.arguments.pop(1)
275291
self.arguments[0] = version_deprecated, version_removed
276292

@@ -474,6 +490,10 @@ def setup(app):
474490
app.add_role('gh', gh_issue_role)
475491
app.add_directive('impl-detail', ImplementationDetail)
476492
app.add_directive('availability', Availability)
493+
app.add_directive('versionadded', PyVersionChange, override=True)
494+
app.add_directive('versionchanged', PyVersionChange, override=True)
495+
app.add_directive('versionremoved', PyVersionChange, override=True)
496+
app.add_directive('deprecated', PyVersionChange, override=True)
477497
app.add_directive('deprecated-removed', DeprecatedRemoved)
478498
app.add_builder(PydocTopicsBuilder)
479499
app.add_object_type('opcode', 'opcode', '%s (opcode)', parse_opcode_signature)
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Writers of CPython's documentation can now use ``next`` as the version for
2+
the ``versionchanged``, ``versionadded``, ``deprecated`` directives.

0 commit comments

Comments
 (0)