Fix #8534: autoattribute failed to document a commented attribute in alias dervied class

This commit is contained in:
Takeshi KOMIYA
2020-12-17 01:04:03 +09:00
parent beeab6ced4
commit 0dbbf1dd54
3 changed files with 20 additions and 9 deletions

View File

@@ -2152,14 +2152,19 @@ class UninitializedInstanceAttributeMixin(DataDocumenterMixinBase):
def get_attribute_comment(self, parent: Any) -> Optional[List[str]]:
try:
analyzer = ModuleAnalyzer.for_module(self.modname)
analyzer.analyze()
for cls in inspect.getmro(parent):
try:
module = safe_getattr(cls, '__module__')
qualname = safe_getattr(cls, '__qualname__')
qualname = safe_getattr(parent, '__qualname__', None)
if qualname and self.objpath:
key = (qualname, self.objpath[-1])
if key in analyzer.attr_docs:
return list(analyzer.attr_docs[key])
analyzer = ModuleAnalyzer.for_module(module)
analyzer.analyze()
if qualname and self.objpath:
key = (qualname, self.objpath[-1])
if key in analyzer.attr_docs:
return list(analyzer.attr_docs[key])
except (AttributeError, PycodeError):
pass
except (AttributeError, PycodeError):
pass

View File

@@ -31,4 +31,4 @@ class Derived(Class):
attr7: int
Alias = Class
Alias = Derived

View File

@@ -1564,7 +1564,7 @@ def test_autodoc_typed_instance_variables(app):
'.. py:attribute:: Alias',
' :module: target.typed_vars',
'',
' alias of :class:`target.typed_vars.Class`',
' alias of :class:`target.typed_vars.Derived`',
'',
'.. py:class:: Class()',
' :module: target.typed_vars',
@@ -1683,16 +1683,22 @@ def test_autodoc_typed_inherited_instance_variables(app):
' :module: target.typed_vars',
' :type: int',
'',
' attr4',
'',
'',
' .. py:attribute:: Derived.attr5',
' :module: target.typed_vars',
' :type: int',
'',
' attr5',
'',
'',
' .. py:attribute:: Derived.attr6',
' :module: target.typed_vars',
' :type: int',
'',
' attr6',
'',
'',
' .. py:attribute:: Derived.attr7',
' :module: target.typed_vars',