Skip to content

Commit 7ba7628

Browse files
authored
Napoleon: Fix valid types for configuration values (#13382)
1 parent 8ef0708 commit 7ba7628

File tree

3 files changed

+26
-25
lines changed

3 files changed

+26
-25
lines changed

CHANGES.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ Bugs fixed
2121
Patch by Kazuya Takei.
2222
* #13380: viewcode: Fix importing modules more than once.
2323
Patch by Dave Hoese.
24+
* #13382: Napoleon: Use the right valid types for configuration values.
25+
Patch by Adam Turner.
2426

2527
Testing
2628
-------

sphinx/ext/napoleon/__init__.py

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from sphinx.util import inspect
1212

1313
if TYPE_CHECKING:
14+
from collections.abc import Sequence, Set
1415
from typing import Any
1516

1617
from sphinx.config import _ConfigRebuild
@@ -270,27 +271,27 @@ def __unicode__(self):
270271
271272
"""
272273

273-
_config_values: dict[str, tuple[Any, _ConfigRebuild]] = {
274-
'napoleon_google_docstring': (True, 'env'),
275-
'napoleon_numpy_docstring': (True, 'env'),
276-
'napoleon_include_init_with_doc': (False, 'env'),
277-
'napoleon_include_private_with_doc': (False, 'env'),
278-
'napoleon_include_special_with_doc': (False, 'env'),
279-
'napoleon_use_admonition_for_examples': (False, 'env'),
280-
'napoleon_use_admonition_for_notes': (False, 'env'),
281-
'napoleon_use_admonition_for_references': (False, 'env'),
282-
'napoleon_use_ivar': (False, 'env'),
283-
'napoleon_use_param': (True, 'env'),
284-
'napoleon_use_rtype': (True, 'env'),
285-
'napoleon_use_keyword': (True, 'env'),
286-
'napoleon_preprocess_types': (False, 'env'),
287-
'napoleon_type_aliases': (None, 'env'),
288-
'napoleon_custom_sections': (None, 'env'),
289-
'napoleon_attr_annotations': (True, 'env'),
290-
}
274+
_config_values: Sequence[tuple[str, bool | None, _ConfigRebuild, Set[type]]] = (
275+
('napoleon_google_docstring', True, 'env', frozenset({bool})),
276+
('napoleon_numpy_docstring', True, 'env', frozenset({bool})),
277+
('napoleon_include_init_with_doc', False, 'env', frozenset({bool})),
278+
('napoleon_include_private_with_doc', False, 'env', frozenset({bool})),
279+
('napoleon_include_special_with_doc', False, 'env', frozenset({bool})),
280+
('napoleon_use_admonition_for_examples', False, 'env', frozenset({bool})),
281+
('napoleon_use_admonition_for_notes', False, 'env', frozenset({bool})),
282+
('napoleon_use_admonition_for_references', False, 'env', frozenset({bool})),
283+
('napoleon_use_ivar', False, 'env', frozenset({bool})),
284+
('napoleon_use_param', True, 'env', frozenset({bool})),
285+
('napoleon_use_rtype', True, 'env', frozenset({bool})),
286+
('napoleon_use_keyword', True, 'env', frozenset({bool})),
287+
('napoleon_preprocess_types', False, 'env', frozenset({bool})),
288+
('napoleon_type_aliases', None, 'env', frozenset({dict, NoneType})),
289+
('napoleon_custom_sections', None, 'env', frozenset({list, tuple, NoneType})),
290+
('napoleon_attr_annotations', True, 'env', frozenset({bool})),
291+
)
291292

292293
def __init__(self, **settings: Any) -> None:
293-
for name, (default, _rebuild) in self._config_values.items():
294+
for name, default, _rebuild, _types in self._config_values:
294295
setattr(self, name, default)
295296
for name, value in settings.items():
296297
setattr(self, name, value)
@@ -331,11 +332,9 @@ def setup(app: Sphinx) -> ExtensionMetadata:
331332
app.connect('autodoc-process-docstring', _process_docstring)
332333
app.connect('autodoc-skip-member', _skip_member)
333334

334-
for name, (default, rebuild) in Config._config_values.items():
335-
if isinstance(default, bool):
336-
app.add_config_value(name, default, rebuild, types=frozenset({bool}))
337-
else:
338-
app.add_config_value(name, default, rebuild, types=frozenset({NoneType}))
335+
for name, default, rebuild, types in Config._config_values:
336+
app.add_config_value(name, default, rebuild, types=types)
337+
339338
return {
340339
'version': sphinx.__display_version__,
341340
'parallel_read_safe': True,

tests/test_extensions/test_ext_napoleon.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ def test_unknown_app_type(self):
115115
def test_add_config_values(self):
116116
app = mock.Mock(Sphinx)
117117
setup(app)
118-
for name in Config._config_values:
118+
for name, _default, _rebuild, _types in Config._config_values:
119119
has_config = False
120120
for method_name, args, _kwargs in app.method_calls:
121121
if method_name == 'add_config_value' and args[0] == name:

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy