Skip to content

Commit

Permalink
Fix #8534: autoattribute failed to document a commented attribute in …
Browse files Browse the repository at this point in the history
…alias dervied class
  • Loading branch information
tk0miya committed Dec 17, 2020
1 parent beeab6c commit 0dbbf1d
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 9 deletions.
19 changes: 12 additions & 7 deletions sphinx/ext/autodoc/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2152,14 +2152,19 @@ def __init__(self):

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

Expand Down
2 changes: 1 addition & 1 deletion tests/roots/test-ext-autodoc/target/typed_vars.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,4 @@ class Derived(Class):
attr7: int


Alias = Class
Alias = Derived
8 changes: 7 additions & 1 deletion tests/test_ext_autodoc.py
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down Expand Up @@ -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',
Expand Down

0 comments on commit 0dbbf1d

Please sign in to comment.