Skip to content

Commit

Permalink
Merge pull request sphinx-doc#8033 from tk0miya/8032_typehint_for_iva…
Browse files Browse the repository at this point in the history
…r_on_parentclass

Fix sphinx-doc#8032: autodoc: A typehint for inherited ivars is not shown
  • Loading branch information
tk0miya committed Aug 2, 2020
2 parents cc25bac + 5d301b4 commit 5be0061
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 0 deletions.
2 changes: 2 additions & 0 deletions CHANGES
Expand Up @@ -61,6 +61,8 @@ Bugs fixed
* #7983: autodoc: Generator type annotation is wrongly rendered in py36
* #8030: autodoc: An uninitialized annotated instance variable is not documented
when ``:inherited-members:`` option given
* #8032: autodoc: A type hint for the instance variable defined at parent class
is not shown in the document of the derived class
* #7839: autosummary: cannot handle umlauts in function names
* #7865: autosummary: Failed to extract summary line when abbreviations found
* #7866: autosummary: Failed to extract correct summary line when docstring
Expand Down
11 changes: 11 additions & 0 deletions sphinx/ext/autodoc/__init__.py
Expand Up @@ -2020,11 +2020,22 @@ def can_document_member(cls, member: Any, membername: str, isattr: bool, parent:
isattr and
member is INSTANCEATTR)

def import_parent(self) -> Any:
try:
parent = importlib.import_module(self.modname)
for name in self.objpath[:-1]:
parent = self.get_attr(parent, name)

return parent
except (ImportError, AttributeError):
return None

def import_object(self, raiseerror: bool = False) -> bool:
"""Never import anything."""
# disguise as an attribute
self.objtype = 'attribute'
self.object = INSTANCEATTR
self.parent = self.import_parent()
self._datadescriptor = False
return True

Expand Down
4 changes: 4 additions & 0 deletions tests/roots/test-ext-autodoc/target/typed_vars.py
Expand Up @@ -25,3 +25,7 @@ def __init__(self):
self.attr5: int #: attr5
self.attr6 = 0 # type: int
"""attr6"""


class Derived(Class):
pass
14 changes: 14 additions & 0 deletions tests/test_ext_autodoc.py
Expand Up @@ -1576,6 +1576,20 @@ def test_autodoc_typed_instance_variables(app):
' This is descr4',
'',
'',
'.. py:class:: Derived()',
' :module: target.typed_vars',
'',
'',
' .. py:attribute:: Derived.attr2',
' :module: target.typed_vars',
' :type: int',
'',
'',
' .. py:attribute:: Derived.descr4',
' :module: target.typed_vars',
' :type: int',
'',
'',
'.. py:data:: attr1',
' :module: target.typed_vars',
' :type: str',
Expand Down

0 comments on commit 5be0061

Please sign in to comment.