Skip to content

Commit deb736f

Browse files
committed
Hyphenate versioning admonitions
Use e.g. 'version-changed' over 'versionchanged'. While the deprecated admonition is marked as deprecated itself in the docs, we do not do anything at runtime since there is almost zero cost to keeping this relative to the work needed for millions of documents to be updated. All our own uses of the 'deprecated' admonition are switched, with some changed to versionchanged where that makes more sense (typically because an attribute or aspect of a feature was deprecated but not the whole feature itself). Changes to the other admonitions will be kept to a separate commit to keep this one reviewable. Signed-off-by: Stephen Finucane <stephen@that.guru>
1 parent 7b4164a commit deb736f

File tree

18 files changed

+195
-77
lines changed

18 files changed

+195
-77
lines changed

doc/development/html_themes/index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ If your theme package contains two or more themes, please call
214214
.. versionadded:: 1.2
215215
'sphinx_themes' entry_points feature.
216216

217-
.. deprecated:: 1.6
217+
.. versionchanged:: 1.6
218218
``sphinx_themes`` entry_points has been deprecated.
219219

220220
.. versionadded:: 1.6

doc/development/html_themes/templating.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -188,24 +188,24 @@ is deprecated in favor of separate sidebar templates, which can be included via
188188
``sidebartoc``
189189
The table of contents within the sidebar.
190190

191-
.. deprecated:: 1.0
191+
.. version-deprecated:: 1.0
192192

193193
``sidebarrel``
194194
The relation links (previous, next document) within the sidebar.
195195

196-
.. deprecated:: 1.0
196+
.. version-deprecated:: 1.0
197197

198198
``sidebarsourcelink``
199199
The "Show source" link within the sidebar (normally only shown if this is
200200
enabled by :confval:`html_show_sourcelink`).
201201

202-
.. deprecated:: 1.0
202+
.. version-deprecated:: 1.0
203203

204204
``sidebarsearch``
205205
The search box within the sidebar. Override this if you want to place some
206206
content at the bottom of the sidebar.
207207

208-
.. deprecated:: 1.0
208+
.. version-deprecated:: 1.0
209209

210210

211211
Configuration Variables
@@ -237,7 +237,7 @@ Overriding works like this::
237237

238238
{% set script_files = script_files + ["_static/myscript.js"] %}
239239

240-
.. deprecated:: 1.8.0
240+
.. version-deprecated:: 1.8.0
241241

242242
Please use ``.Sphinx.add_js_file()`` instead.
243243

doc/extdev/markupapi.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ and does not contain any structural elements
203203
with switch_source_input(self.state, self.result):
204204
parsed = nested_parse_to_nodes(self.state, self.result)
205205
206-
.. deprecated:: 1.7
206+
.. version-deprecated:: 1.7
207207

208208
Until Sphinx 1.6, ``sphinx.ext.autodoc.AutodocReporter`` was used for this
209209
purpose. It is replaced by ``switch_source_input()``.

doc/latex.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,8 @@ Keys that you may want to override include:
288288

289289
Default: ``''``
290290

291-
.. deprecated:: 1.5
291+
.. version-deprecated:: 1.5
292+
292293
Use ``'atendofbody'`` key instead.
293294

294295
Keys that don't need to be overridden unless in special cases are:

doc/usage/configuration.rst

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1157,7 +1157,7 @@ Options for source files
11571157
The recommended encoding is ``'utf-8-sig'``.
11581158

11591159
.. versionadded:: 0.5
1160-
.. deprecated:: 8.3
1160+
.. version-deprecated:: 8.3
11611161
Support for source encodings other than UTF-8 is deprecated.
11621162
Sphinx 10 will only support UTF-8 files.
11631163

@@ -1586,7 +1586,7 @@ and also make use of these options.
15861586
.. versionadded:: 3.2
15871587
.. versionchanged:: 4.0
15881588
It defaults to :code-py:`'inline'`.
1589-
.. deprecated:: 4.0
1589+
.. version-deprecated:: 4.0
15901590

15911591
.. confval:: html_context
15921592
:type: :code-py:`dict[str, Any]`
@@ -1853,7 +1853,7 @@ and also make use of these options.
18531853
.. versionadded:: 1.0
18541854
The ability to use globbing keys and to specify multiple sidebars.
18551855

1856-
.. deprecated:: 1.7
1856+
.. version-deprecated:: 1.7
18571857
A single string value for :confval:`!html_sidebars` will be removed.
18581858

18591859
.. versionchanged:: 2.0
@@ -2103,7 +2103,8 @@ and also make use of these options.
21032103
`Janome <https://pypi.org/project/Janome/>`_ is required.
21042104

21052105

2106-
.. deprecated:: 1.6
2106+
.. version-deprecated:: 1.6
2107+
21072108
``'mecab'``, ``'janome'`` and ``'default'`` is deprecated.
21082109
To keep compatibility,
21092110
``'mecab'``, ``'janome'`` and ``'default'`` are also acceptable.

doc/usage/restructuredtext/directives.rst

Lines changed: 43 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,7 @@ Describing changes between versions
537537
pair: changes; in version
538538
pair: removed; in version
539539

540-
.. rst:directive:: .. versionadded:: version [brief explanation]
540+
.. rst:directive:: .. version-added:: version [brief explanation]
541541
542542
This directive documents the version of the project
543543
which added the described feature.
@@ -553,57 +553,84 @@ Describing changes between versions
553553

554554
Example::
555555

556-
.. versionadded:: 2.5
556+
.. version-added:: 2.5
557557
The *spam* parameter.
558558

559-
.. versionadded:: 2.5
559+
.. version-added:: 2.5
560560
The *spam* parameter.
561561

562-
.. rst:directive:: .. versionchanged:: version [brief explanation]
562+
.. rst:directive:: .. version-changed:: version [brief explanation]
563563
564-
Similar to :rst:dir:`versionadded`, but describes when and what changed in
564+
Similar to :rst:dir:`version-added`, but describes when and what changed in
565565
the named feature in some way (new parameters, changed side effects, etc.).
566566

567567
Example::
568568

569-
.. versionchanged:: 2.8
569+
.. version-changed:: 2.8
570570
The *spam* parameter is now of type *boson*.
571571

572-
.. versionchanged:: 2.8
572+
.. version-changed:: 2.8
573573
The *spam* parameter is now of type *boson*.
574574

575-
.. rst:directive:: .. deprecated:: version [brief explanation]
575+
.. rst:directive:: .. version-deprecated:: version [brief explanation]
576576
577-
Similar to :rst:dir:`versionadded`, but describes when the feature was
577+
Similar to :rst:dir:`version-added`, but describes when the feature was
578578
deprecated.
579579
A *brief* explanation can also be given,
580580
for example to tell the reader what to use instead.
581581

582+
.. version-added:: 8.3
583+
582584
Example::
583585

584-
.. deprecated:: 3.1
586+
.. version-deprecated:: 3.1
585587
Use :py:func:`spam` instead.
586588

587-
.. deprecated:: 3.1
589+
.. version-deprecated:: 3.1
588590
Use :py:func:`!spam` instead.
589591

590-
.. rst:directive:: .. versionremoved:: version [brief explanation]
592+
.. rst:directive:: .. version-removed:: version [brief explanation]
591593
592-
Similar to :rst:dir:`versionadded`, but describes when the feature was removed.
594+
Similar to :rst:dir:`version-added`, but describes when the feature was removed.
593595
An explanation may be provided to tell the reader what to use instead,
594596
or why the feature was removed.
595597

596-
.. versionadded:: 7.3
598+
.. version-added:: 7.3
597599

598600
Example::
599601

600-
.. versionremoved:: 4.0
602+
.. version-removed:: 4.0
601603
The :py:func:`spam` function is more flexible, and should be used instead.
602604

603-
.. versionremoved:: 4.0
605+
.. version-removed:: 4.0
604606
The :py:func:`!spam` function is more flexible, and should be used instead.
605607

606608

609+
.. rst:directive:: .. versionadded:: version [brief explanation]
610+
611+
A legacy alias for :rst:dir:`version-added`.
612+
613+
.. version-deprecated:: 8.3
614+
615+
.. rst:directive:: .. versionchanged:: version [brief explanation]
616+
617+
A legacy alias for :rst:dir:`version-changed`.
618+
619+
.. version-deprecated:: 8.3
620+
621+
.. rst:directive:: .. deprecated:: version [brief explanation]
622+
623+
A legacy alias for :rst:dir:`version-deprecated`.
624+
625+
.. version-deprecated:: 8.3
626+
627+
.. rst:directive:: .. versionremoved:: version [brief explanation]
628+
629+
A legacy alias for :rst:dir:`version-removed`.
630+
631+
.. version-deprecated:: 8.3
632+
633+
607634
Presentational
608635
^^^^^^^^^^^^^^
609636

sphinx/addnodes.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -402,8 +402,8 @@ class desc_sig_literal_char(desc_sig_element, _sig_element=True):
402402
class versionmodified(nodes.Admonition, nodes.TextElement):
403403
"""Node for version change entries.
404404
405-
Currently used for "versionadded", "versionchanged", "deprecated"
406-
and "versionremoved" directives.
405+
Currently used for "version-added", "version-changed", "version-deprecated"
406+
and "version-removed" directives, along with their aliases.
407407
"""
408408

409409

sphinx/application.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1117,7 +1117,7 @@ def setup(app):
11171117
11181118
.. versionchanged:: 0.6
11191119
Docutils 0.5-style directive classes are now supported.
1120-
.. deprecated:: 1.8
1120+
.. versionchanged:: 1.8
11211121
Docutils 0.4-style (function based) directives support is deprecated.
11221122
.. versionchanged:: 1.8
11231123
Add *override* keyword.

sphinx/builders/changes.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424

2525
class ChangesBuilder(Builder):
26-
"""Write a summary with all versionadded/changed/deprecated/removed directives."""
26+
"""Write a summary with all version-related directives."""
2727

2828
name = 'changes'
2929
epilog = __('The overview file is in %(outdir)s.')
@@ -43,6 +43,11 @@ def get_outdated_docs(self) -> str:
4343
return str(self.outdir)
4444

4545
typemap = {
46+
'version-added': 'added',
47+
'version-changed': 'changed',
48+
'version-deprecated': 'deprecated',
49+
'version-removed': 'removed',
50+
# deprecated aliases
4651
'versionadded': 'added',
4752
'versionchanged': 'changed',
4853
'deprecated': 'deprecated',
@@ -112,6 +117,11 @@ def write_documents(self, _docnames: Set[str]) -> None:
112117
f.write(self.templates.render('changes/versionchanges.html', ctx))
113118

114119
hltext = [
120+
f'.. version-added:: {version}',
121+
f'.. version-changed:: {version}',
122+
f'.. version-deprecated:: {version}',
123+
f'.. version-removed:: {version}',
124+
# deprecated alises
115125
f'.. versionadded:: {version}',
116126
f'.. versionchanged:: {version}',
117127
f'.. deprecated:: {version}',

sphinx/domains/changeset.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@
2121
from sphinx.environment import BuildEnvironment
2222
from sphinx.util.typing import ExtensionMetadata, OptionSpec
2323

24+
name_aliases = {
25+
'version-added': 'versionadded',
26+
'version-changed': 'versionchanged',
27+
'version-deprecated': 'deprecated',
28+
'version-removed': 'versionremoved',
29+
}
2430

2531
versionlabels = {
2632
'versionadded': _('Added in version %s'),
@@ -56,12 +62,13 @@ class VersionChange(SphinxDirective):
5662
option_spec: ClassVar[OptionSpec] = {}
5763

5864
def run(self) -> list[Node]:
65+
name = name_aliases.get(self.name, self.name)
5966
node = addnodes.versionmodified()
6067
node.document = self.state.document
6168
self.set_source_info(node)
62-
node['type'] = self.name
69+
node['type'] = name
6370
node['version'] = self.arguments[0]
64-
text = versionlabels[self.name] % self.arguments[0]
71+
text = versionlabels[name] % self.arguments[0]
6572
if len(self.arguments) == 2:
6673
inodes, messages = self.parse_inline(
6774
self.arguments[1], lineno=self.lineno + 1
@@ -73,7 +80,7 @@ def run(self) -> list[Node]:
7380
messages = []
7481
if self.content:
7582
node += self.parse_content_to_nodes()
76-
classes = ['versionmodified', versionlabel_classes[self.name]]
83+
classes = ['versionmodified', versionlabel_classes[name]]
7784
if len(node) > 0 and isinstance(node[0], nodes.paragraph):
7885
# the contents start with a paragraph
7986
if node[0].rawsource:
@@ -168,6 +175,10 @@ def get_changesets_for(self, version: str) -> list[ChangeSet]:
168175

169176
def setup(app: Sphinx) -> ExtensionMetadata:
170177
app.add_domain(ChangeSetDomain)
178+
app.add_directive('version-added', VersionChange)
179+
app.add_directive('version-changed', VersionChange)
180+
app.add_directive('version-deprecated', VersionChange)
181+
app.add_directive('version-removed', VersionChange)
171182
app.add_directive('deprecated', VersionChange)
172183
app.add_directive('versionadded', VersionChange)
173184
app.add_directive('versionchanged', VersionChange)

0 commit comments

Comments
 (0)