autoattribute can't extract docstring for descriptor attributes

julians37 avatarjulians37 created an issue

Consider this example:

index.rst:

.. automodule:: foo

.. autoclass:: foo.Foo

  .. autoattribute:: attribute

foo.py:

import bar

class Foo(object):
    #: Docstring for attribute
    attribute = bar.Descriptor()

bar.py:

class Descriptor(object):
    pass

The docstring for attribute is ignored by current Sphinx because ModuleAnalyzer will parse bar.py instead of foo.py to look for it. That is because foo.Foo.attribute.__module__ returns 'bar', and that is what AttributeDocumenter.get_real_modname returns.

A patch for autodoc.py is attached. It overrides AttributeDocumenter.get_real_modname to try to get __module__ from the parent class if possible.

Comments (7)

  1. Log in to comment
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.