Python Sphinx Autosummary: автоматический список функций-членов

Как я могу сказать, что автозаполнение расширяет список не только одного класса, но и всех членов класса?

Если я использую:

.. autosummary:: MyClass 

В результирующем html-файле будет только одно краткое описание, например:

MyClass (var1, var2, ….) Мой пользовательский класс, чтобы делать причудливые вещи …

Я действительно хочу что-то вроде:

MyClass (var1, var2, ….) Мой пользовательский класс, чтобы делать причудливые вещи …

MyClass.doA (var1, var2, …) Очень хорошо

MyClass.doB (var1, var2, …) делает B еще лучше

Как мне настроить конфигурацию autosummary, чтобы получить это (кроме утомительного наименования всех функций в директиве autosummary)? Благодаря!

3 Solutions collect form web for “Python Sphinx Autosummary: автоматический список функций-членов”

Вы можете расширить директиву Autosummary, как показано ниже, и вызвать ее так:

 .. autoclass:: your.fully.qualified.path.to.the.Class :members: :undoc-members: .. rubric:: Methods .. autoautosummary:: your.fully.qualified.path.to.the.Class :methods: .. rubric:: Attributes .. autoautosummary:: your.fully.qualified.path.to.the.Class :attributes: 

Код:

 from sphinx.ext.autosummary import Autosummary from sphinx.ext.autosummary import get_documenter from docutils.parsers.rst import directives from sphinx.util.inspect import safe_getattr import re class AutoAutoSummary(Autosummary): option_spec = { 'methods': directives.unchanged, 'attributes': directives.unchanged } required_arguments = 1 @staticmethod def get_members(obj, typ, include_public=None): if not include_public: include_public = [] items = [] for name in dir(obj): try: documenter = get_documenter(safe_getattr(obj, name), obj) except AttributeError: continue if documenter.objtype == typ: items.append(name) public = [x for x in items if x in include_public or not x.startswith('_')] return public, items def run(self): clazz = str(self.arguments[0]) try: (module_name, class_name) = clazz.rsplit('.', 1) m = __import__(module_name, globals(), locals(), [class_name]) c = getattr(m, class_name) if 'methods' in self.options: _, methods = self.get_members(c, 'method', ['__init__']) self.content = ["~%s.%s" % (clazz, method) for method in methods if not method.startswith('_')] if 'attributes' in self.options: _, attribs = self.get_members(c, 'attribute') self.content = ["~%s.%s" % (clazz, attrib) for attrib in attribs if not attrib.startswith('_')] finally: return super(AutoAutoSummary, self).run() app.add_directive('autoautosummary', AutoAutoSummary) 

Вы также должны набирать членов класса

 .. autosummary:: MyClass MyClass.doA MyClass.doB 

Мне нравится разбивать его на заголовки или рубрики, например

 .. rubric:: Classes .. autosummary:: MyClass .. rubric:: MyClass Members .. autosummary:: MyClass.doA MyClass.doB 

Может быть, вы должны использовать autoclass, предоставляемый sphinx, вы можете подойти к этому, заменив autosummary:

 .. autoclass:: MyClass :members: 
  • можете ли вы переименовать «оглавление» в боковую панель sphinx?
  • Как я могу документировать классы без имени модуля?
  • Как документировать вложенные классы с помощью autodoc Sphinx?
  • Как отправить пакет в PyPi?
  • Python Sphinx autodoc и украшенные элементы
  • Sphinx - генерировать автоматические ссылки на билеты и изменения в Trac
  • Документ python с использованием Eclipse / Pydev
  • sphinx automodule: как ссылаться на классы в одном модуле?
  •  
    Interesting Posts for Van-Lav

    Python argparse AssertionError из metavar ` HOST:] FILE`

    Установка нескольких основных и битовых версий Python

    Прочитайте файл в обратном порядке, используя python

    Как создать веб-страницу с кнопками, которые вызывают различные скрипты Python в системе, обслуживающей веб-страницу?

    «Протоколы нельзя использовать с isinstance ()» – почему бы и нет?

    Как очистить эту веб-страницу с помощью Python и lxml? пустой список возвращен

    .doc в pdf с использованием python

    Прокрутка «wx.ScrolledPanel» с помощью колеса мыши и клавиш со стрелками

    Тестирование, если список содержит другой список с Python

    Являются ли переменные экземпляра Python безопасными для потоков?

    Получить ключ, соответствующий минимальному значению в словаре

    Завершение кода не работает для OpenCV и Python

    Потеря NaN при тренировке регрессионной сети

    PyQt: Как установить разные размеры заголовков для отдельных заголовков?

    Почему locals () возвращают странный собственный референтный список?

    Python - лучший язык программирования в мире.