mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Fix documenting inherited attributes
This commit is contained in:
parent
60775ec4c4
commit
3956cf2249
@ -1670,7 +1670,8 @@ class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # type:
|
||||
self.add_line(' ' + _('Bases: %s') % ', '.join(base_classes), sourcename)
|
||||
|
||||
def get_object_members(self, want_all: bool) -> Tuple[bool, ObjectMembers]:
|
||||
members = get_class_members(self.object, self.objpath, self.get_attr)
|
||||
members = get_class_members(self.object, self.objpath, self.get_attr,
|
||||
self.config.autodoc_inherit_docstrings)
|
||||
if not want_all:
|
||||
if not self.options.members:
|
||||
return False, [] # type: ignore
|
||||
|
@ -205,8 +205,8 @@ def get_object_members(subject: Any, objpath: List[str], attrgetter: Callable,
|
||||
return members
|
||||
|
||||
|
||||
def get_class_members(subject: Any, objpath: List[str], attrgetter: Callable
|
||||
) -> Dict[str, "ObjectMember"]:
|
||||
def get_class_members(subject: Any, objpath: List[str], attrgetter: Callable,
|
||||
inherit_docstrings: bool = True) -> Dict[str, "ObjectMember"]:
|
||||
"""Get members and attributes of target class."""
|
||||
from sphinx.ext.autodoc import INSTANCEATTR, ObjectMember
|
||||
|
||||
@ -290,6 +290,11 @@ def get_class_members(subject: Any, objpath: List[str], attrgetter: Callable
|
||||
elif (ns == qualname and docstring and
|
||||
isinstance(members[name], ObjectMember) and
|
||||
not members[name].docstring):
|
||||
if cls != subject and not inherit_docstrings:
|
||||
# If we are in the MRO of the class and not the class itself,
|
||||
# and we do not want to inherit docstrings, then skip setting
|
||||
# the docstring below
|
||||
continue
|
||||
# attribute is already known, because dir(subject) enumerates it.
|
||||
# But it has no docstring yet
|
||||
members[name].docstring = '\n'.join(docstring)
|
||||
|
Loading…
Reference in New Issue
Block a user