Свойства модуля документа Sphinx

У меня есть модуль, который должен иметь@propertyЯ решил это, установив класс в качестве модуля. Я получил идею из этого ответа:Ленивые переменные модуля - это можно сделать?

Я хотел, чтобы это было повторяемым и простым в использовании, поэтому я сделал для него метакласс. Это работает как шарм.

Проблема в том, что при использовании Sphinx для генерации свойств документацииполучить документально. Все остальное задокументировано, как и ожидалось. Я понятия не имею, как это исправить, может быть, это проблема со Сфинксом?

Модуль:

import sys
import types

class ClassAsModule(type):
    def __new__(cls, name, bases, attrs):
        # Make sure the name of the class is the module name.
        name = attrs.pop('__module__')
        # Create a class.
        cls = type.__new__(cls, name, bases, attrs)
        # Instantiate the class and register it.
        sys.modules[name] = cls = cls(name)
        # Update the dict so dir works properly
        cls.__dict__.update(attrs)

class TestClass(types.ModuleType):
    """TestClass docstring."""
    __metaclass__ = ClassAsModule
    @property
    def some_property(self):
        """Property docstring."""
        pass
    def meth():
        """meth doc"""
        pass

И копирование-вставка для генерации / просмотра документации Sphinx:

sphinx-apidoc . -o doc --full
sphinx-build doc html
xdg-open html/module.html

Наиболее важной частью является документирование класса свойства. Бонусные баллы также позволяют документировать оригинальных членов модуля.

РЕДАКТИРОВАТЬ: Класс должен быть задокументирован как модуль, в котором он находится. Класс используется таким образом и, таким образом, должен отображаться в Sphinx таким образом.

Пример желаемого результата:

Module Foo
    TestClass docstring.

    some_property
        Property docstring.

    meth()
        meth doc

РЕДАКТИРОВАТЬ 2: Я нашел то, что может помочь в поиске решения. При наличии обычного модуляfoo со следующим содержанием:

#: Property of foo
prop = 'test'

Сфинкс документирует это так:

foo.prop = 'test'
    Property of foo

То же самое работает, еслиprop является атрибутом класса. У меня нетне понял, почему это не такне работает в моем особом случае.

Ответы на вопрос(2)

Ваш ответ на вопрос