mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
autosummary: Respect empty module `__all__
` (#13187)
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
This commit is contained in:
parent
a0cd666906
commit
cfb47865d6
@ -54,6 +54,8 @@ Features added
|
||||
Bugs fixed
|
||||
----------
|
||||
|
||||
* #12463: autosummary: Respect an empty module ``__all__``.
|
||||
Patch by Valentin Pratz
|
||||
* #13060: HTML Search: use ``Map`` to store per-file term scores.
|
||||
Patch by James Addison
|
||||
* #13130: LaTeX docs: ``pdflatex`` index creation may fail for index entries
|
||||
|
@ -275,7 +275,11 @@ def members_of(obj: Any, conf: Config) -> Sequence[str]:
|
||||
if conf.autosummary_ignore_module_all:
|
||||
return dir(obj)
|
||||
else:
|
||||
return getall(obj) or dir(obj)
|
||||
if (obj___all__ := getall(obj)) is not None:
|
||||
# return __all__, even if empty.
|
||||
return obj___all__
|
||||
# if __all__ is not set, return dir(obj)
|
||||
return dir(obj)
|
||||
|
||||
|
||||
def generate_autosummary_content(
|
||||
|
@ -0,0 +1 @@
|
||||
__all__ = ()
|
11
tests/roots/test-ext-autosummary-module_empty_all/conf.py
Normal file
11
tests/roots/test-ext-autosummary-module_empty_all/conf.py
Normal file
@ -0,0 +1,11 @@
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
sys.path.insert(0, str(Path.cwd().resolve()))
|
||||
|
||||
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.autosummary']
|
||||
autodoc_default_options = {'members': True}
|
||||
autosummary_ignore_module_all = False
|
||||
autosummary_imorted_members = False
|
||||
|
||||
templates_path = ['templates']
|
@ -0,0 +1,8 @@
|
||||
test-ext-autosummary-module_all
|
||||
===============================
|
||||
|
||||
.. autosummary::
|
||||
:toctree: generated
|
||||
:recursive:
|
||||
|
||||
autosummary_dummy_package_empty_all
|
@ -0,0 +1,13 @@
|
||||
{{ fullname | escape | underline}}
|
||||
|
||||
.. automodule:: {{ fullname }}
|
||||
|
||||
{% block members %}
|
||||
Summary
|
||||
-------
|
||||
.. autosummary::
|
||||
|
||||
{% for item in members %}
|
||||
{{ item }}
|
||||
{%- endfor %}
|
||||
{% endblock %}
|
@ -826,9 +826,8 @@ def test_autosummary_module_all(app):
|
||||
app.build()
|
||||
# generated/foo is generated successfully
|
||||
assert app.env.get_doctree('generated/autosummary_dummy_package_all')
|
||||
module = (
|
||||
app.srcdir / 'generated' / 'autosummary_dummy_package_all.rst'
|
||||
).read_text(encoding='utf8')
|
||||
path = app.srcdir / 'generated' / 'autosummary_dummy_package_all.rst'
|
||||
module = path.read_text(encoding='utf8')
|
||||
assert ' .. autosummary::\n \n PublicBar\n \n' in module
|
||||
assert (
|
||||
' .. autosummary::\n \n public_foo\n public_baz\n \n'
|
||||
@ -840,6 +839,30 @@ def test_autosummary_module_all(app):
|
||||
sys.modules.pop('autosummary_dummy_package_all', None)
|
||||
|
||||
|
||||
@pytest.mark.sphinx('dummy', testroot='ext-autosummary-module_empty_all')
|
||||
def test_autosummary_module_empty_all(app):
|
||||
try:
|
||||
app.build()
|
||||
# generated/foo is generated successfully
|
||||
assert app.env.get_doctree('generated/autosummary_dummy_package_empty_all')
|
||||
path = app.srcdir / 'generated' / 'autosummary_dummy_package_empty_all.rst'
|
||||
module = path.read_text(encoding='utf8')
|
||||
assert '.. automodule:: autosummary_dummy_package_empty_all' in module
|
||||
# for __all__ = (), the output should not contain any variables
|
||||
assert '__all__' not in module
|
||||
assert '__builtins__' not in module
|
||||
assert '__cached__' not in module
|
||||
assert '__doc__' not in module
|
||||
assert '__file__' not in module
|
||||
assert '__loader__' not in module
|
||||
assert '__name__' not in module
|
||||
assert '__package__' not in module
|
||||
assert '__path__' not in module
|
||||
assert '__spec__' not in module
|
||||
finally:
|
||||
sys.modules.pop('autosummary_dummy_package_all', None)
|
||||
|
||||
|
||||
@pytest.mark.sphinx(
|
||||
'html',
|
||||
testroot='ext-autodoc',
|
||||
|
Loading…
Reference in New Issue
Block a user