sphinx-doc / sphinx

The Sphinx documentation generator
https://www.sphinx-doc.org/
Other
6.46k stars 2.1k forks source link

`autosummary` ignores `__all__` when it is empty #12463

Open francois-rozet opened 3 months ago

francois-rozet commented 3 months ago

Describe the bug

With __all__ = [] in a module, autosummary takes everything as a member instead of nothing, even with autosummary_ignore_module_all = False. In addition, weird members like __builtins__, __file__ and __package__ are showed as members.

"""Dummy module"""

__all__ = []

def component():
    """Dummy component"""

    pass

image

How to Reproduce

I provide a minimal reproducing example in https://github.com/francois-rozet/sphinx-bug

git clone https://github.com/francois-rozet/sphinx-bug
cd sphinx-bug
pip install -e .
pip install sphinx
sphinx-build . html
open html/api/dummy.html

Environment Information

Platform:              linux; (Linux-6.5.0-0.deb12.4-amd64-x86_64-with-glibc2.38)
Python version:        3.9.18 | packaged by conda-forge | (main, Aug 30 2023, 03:49:32) 
[GCC 12.3.0])
Python implementation: CPython
Sphinx version:        7.3.7
Docutils version:      0.19
Jinja2 version:        3.1.2
Pygments version:      2.17.2

Sphinx extensions

extensions = [
    'sphinx.ext.autodoc',
    'sphinx.ext.autosummary',
]

Additional context

No response

francois-rozet commented 3 months ago

Note that if dummy/__init__.py is empty

"""Dummy module"""

# __all__ = []

# def component():
#     """Dummy component"""

#     pass

the weird members (__builtins__, __cached__, ...) still appear.

image