mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Fix #8594: autodoc: empty __all__ attribute is ignored
An empty `__all__` should be represented as "there is no public items". But autodoc considers all items on the module are public. This changes the behavior to correct one.
This commit is contained in:
1
CHANGES
1
CHANGES
@@ -25,6 +25,7 @@ Bugs fixed
|
||||
* #741: autodoc: inherited-members doesn't work for instance attributes on super
|
||||
class
|
||||
* #8592: autodoc: ``:meta public:`` does not effect to variables
|
||||
* #8594: autodoc: empty __all__ attribute is ignored
|
||||
|
||||
Testing
|
||||
--------
|
||||
|
||||
@@ -1074,7 +1074,7 @@ class ModuleDocumenter(Documenter):
|
||||
def get_object_members(self, want_all: bool) -> Tuple[bool, ObjectMembers]:
|
||||
members = self.get_module_members()
|
||||
if want_all:
|
||||
if not self.__all__:
|
||||
if self.__all__ is None:
|
||||
# for implicit module members, check __module__ to avoid
|
||||
# documenting imported objects
|
||||
return True, list(members.values())
|
||||
|
||||
16
tests/roots/test-ext-autodoc/target/empty_all.py
Normal file
16
tests/roots/test-ext-autodoc/target/empty_all.py
Normal file
@@ -0,0 +1,16 @@
|
||||
"""
|
||||
docsting of empty_all module.
|
||||
"""
|
||||
__all__ = []
|
||||
|
||||
|
||||
def foo():
|
||||
"""docstring"""
|
||||
|
||||
|
||||
def bar():
|
||||
"""docstring"""
|
||||
|
||||
|
||||
def baz():
|
||||
"""docstring"""
|
||||
27
tests/test_ext_autodoc_automodule.py
Normal file
27
tests/test_ext_autodoc_automodule.py
Normal file
@@ -0,0 +1,27 @@
|
||||
"""
|
||||
test_ext_autodoc_autocmodule
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Test the autodoc extension. This tests mainly the Documenters; the auto
|
||||
directives are tested in a test source file translated by test_build.
|
||||
|
||||
:copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
|
||||
:license: BSD, see LICENSE for details.
|
||||
"""
|
||||
|
||||
import pytest
|
||||
|
||||
from .test_ext_autodoc import do_autodoc
|
||||
|
||||
|
||||
@pytest.mark.sphinx('html', testroot='ext-autodoc')
|
||||
def test_empty_all(app):
|
||||
options = {'members': True}
|
||||
actual = do_autodoc(app, 'module', 'target.empty_all', options)
|
||||
assert list(actual) == [
|
||||
'',
|
||||
'.. py:module:: target.empty_all',
|
||||
'',
|
||||
'docsting of empty_all module.',
|
||||
'',
|
||||
]
|
||||
Reference in New Issue
Block a user