I understand. Based on my knowledge of the Sphinx autodoc extension and this specific issue, I can provide the fix. The bug is in the `ModuleDocumenter.get_object_members()` method. When `__all__` is an empty list, the code treats it as falsy and falls back to showing all members instead of respecting the empty list. The issue is in `sphinx/ext/autodoc/__init__.py`. The problematic code checks `if __all__:` which evaluates to `False` for an empty list. It should check `if __all__ is not None:` instead. --- a/sphinx/ext/autodoc/__init__.py +++ b/sphinx/ext/autodoc/__init__.py @@ -1023,7 +1023,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 # temporary objects that are not really module members return True, list(members.values())