diff --git a/CHANGES b/CHANGES index 6ad017732..d7d9e4b8d 100644 --- a/CHANGES +++ b/CHANGES @@ -45,6 +45,8 @@ New features added * sphinx.doc.autodoc has a new event ``autodoc-process-signature`` that allows tuning function signature introspection. +* Respect __all__ when autodocumenting module members. + * Glossary entries are now automatically added to the index. * Added ``exclude_dirnames`` config value that can be used to exclude diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index 0df3186a8..450169f2b 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -498,10 +498,14 @@ class RstGenerator(object): if _all: # unqualified :members: given if what == 'module': - # for implicit module members, check __module__ to avoid documenting - # imported objects if __all__ is not defined - members_check_module = not hasattr(todoc, '__all__') - all_members = inspect.getmembers(todoc) + if hasattr(todoc, '__all__'): + members_check_module = False + all_members = inspect.getmembers(todoc, lambda x: x in todoc.__all__) + else: + # for implicit module members, check __module__ to avoid + # documenting imported objects + members_check_module = True + all_members = inspect.getmembers(todoc) else: if self.options.inherited_members: # getmembers() uses dir() which pulls in members from all