Получить "плоский" элемент для автомодуля sphinx
Я использую расширение autodoc Sphinx для документирования модуля, и я хотел бы получить плоский список членов модуля в выводе документации.
Я попытался использовать следующее:
.. automodule:: modname
:members:
Однако есть две проблемы:
-
Он включает в себя модуль docstring, который мне здесь не нужен.
-
Название каждой записи имеет префикс "modname.", который является полностью избыточным (так как эта страница специально предназначена для документирования этого модуля).
Однако мне не удалось найти какие-либо параметры конфигурации, которые позволили бы мне выборочно отключить эти два аспекта, все еще получая автоматический список всех членов модуля.
Мой текущий план состоит в том, чтобы просто использовать autofunction (и т.д.) и явно перечислять элементы для документирования, но я все равно хотел бы знать, пропустил ли я простой способ достичь того, что я изначально хотел.
Обновление: Я хотя бы нашел обходной путь для второй части: set add_module_names=False
в conf.py
. Это глобальная настройка, поэтому на самом деле я не отвечаю на мой первоначальный вопрос.
Ответы
Ответ 1
Глядя на этот ответ на аналогичный вопрос, я обнаружил, что вы можете использовать autodoc-process-docstring
, чтобы удалить docstrings из модулей, добавив следующий код к вашему conf.py
:
def skip_modules_docstring(app, what, name, obj, options, lines):
if what == 'module':
del lines[:]
def setup(app):
app.connect('autodoc-process-docstring', skip_modules_docstring)
Обратите внимание, что оператор del
необходим, потому что, согласно документации, модификация на lines
должна произойти на месте (вы создаете новый объект, он не работает).
Наконец, вы также можете использовать name
, чтобы отфильтровать docstrings из нескольких модулей, сохранив их от других.