mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Merge pull request #2299 from scVENUS/fix_attribute_docstrings_of_imported_class
Fix #2298: automodule fails to document a class attribute.
This commit is contained in:
@@ -1529,6 +1529,17 @@ class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # type:
|
||||
return
|
||||
ModuleLevelDocumenter.document_members(self, all_members)
|
||||
|
||||
def generate(self, more_content=None, real_modname=None,
|
||||
check_module=False, all_members=False):
|
||||
# Do not pass real_modname and use the name from the __module__
|
||||
# attribute of the class.
|
||||
# If a class gets imported into the module real_modname
|
||||
# the analyzer won't find the source of the class, if
|
||||
# it looks in real_modname.
|
||||
return super(ClassDocumenter, self).generate(more_content=more_content,
|
||||
check_module=check_module,
|
||||
all_members=all_members)
|
||||
|
||||
|
||||
class ExceptionDocumenter(ClassDocumenter):
|
||||
"""
|
||||
|
||||
@@ -28,6 +28,11 @@ viewcode
|
||||
:language: python
|
||||
:pyobject: func1
|
||||
|
||||
.. autoclass:: spam.mod3.Class3
|
||||
:members:
|
||||
|
||||
.. automodule:: spam.mod3
|
||||
:members:
|
||||
|
||||
.. toctree::
|
||||
|
||||
|
||||
@@ -18,3 +18,10 @@ class Class1(object):
|
||||
"""
|
||||
this is Class1
|
||||
"""
|
||||
|
||||
class Class3(object):
|
||||
"""
|
||||
this is Class3
|
||||
"""
|
||||
class_attr = 42
|
||||
"""this is the class attribute class_attr"""
|
||||
|
||||
2
tests/roots/test-ext-viewcode/spam/mod3.py
Normal file
2
tests/roots/test-ext-viewcode/spam/mod3.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from spam.mod1 import Class3
|
||||
__all__ = ('Class3',)
|
||||
@@ -32,6 +32,12 @@ def test_viewcode(app, status, warning):
|
||||
assert result.count('href="_modules/spam/mod2.html#Class2"') == 2
|
||||
assert result.count('@decorator') == 1
|
||||
|
||||
# test that the class attribute is correctly documented
|
||||
assert result.count('this is Class3') == 2
|
||||
assert 'this is the class attribute class_attr' in result
|
||||
# the next assert fails, until the autodoc bug gets fixed
|
||||
assert result.count('this is the class attribute class_attr') == 2
|
||||
|
||||
|
||||
@pytest.mark.sphinx(testroot='ext-viewcode', tags=['test_linkcode'])
|
||||
def test_linkcode(app, status, warning):
|
||||
|
||||
Reference in New Issue
Block a user