diff --git a/sphinx/ext/autodoc/__init__.py b/sphinx/ext/autodoc/__init__.py index 31f390a9915..2dab6807dbf 100644 --- a/sphinx/ext/autodoc/__init__.py +++ b/sphinx/ext/autodoc/__init__.py @@ -626,6 +626,10 @@ def is_filtered_inherited_member(name: str) -> bool: if safe_getattr(member, '__sphinx_mock__', False): # mocked module or object pass + elif (self.options.exclude_members not in (None, ALL) and + membername in self.options.exclude_members): + # remove members given by exclude-members + keep = False elif want_all and membername.startswith('__') and \ membername.endswith('__') and len(membername) > 4: # special __methods__ @@ -695,16 +699,6 @@ def document_members(self, all_members: bool = False) -> None: # find out which members are documentable members_check_module, members = self.get_object_members(want_all) - # remove members given by exclude-members - if self.options.exclude_members: - members = [ - (membername, member) for (membername, member) in members - if ( - self.options.exclude_members is ALL or - membername not in self.options.exclude_members - ) - ] - # document non-skipped members memberdocumenters = [] # type: List[Tuple[Documenter, bool]] for (mname, member, isattr) in self.filter_members(members, want_all):