Я пытаюсь использовать Sphinx для документирования проекта на 5000 строк в Python. Имеет около 7 базовых модулей. Насколько я знаю, чтобы использовать autodoc, мне нужно написать такой код для каждого файла в моем проекте:
.. automodule:: mods.set.tests
:members:
:show-inheritance:
Это слишком утомительно, потому что у меня много файлов. Было бы намного проще, если бы я мог просто указать, что я хочу, чтобы пакет 'mods' был задокументирован. Затем Sphinx может рекурсивно пройти через пакет и создать страницу для каждого подмодуля.
Есть ли такая функция? Если бы не я, я мог бы написать скрипт для создания всех файлов .rst, но это заняло бы много времени.
python
python-sphinx
autodoc
Кори Уокер
источник
источник
ls
к файлу и редактировать это?Ответы:
Вы можете проверить этот скрипт, который я сделал. Я думаю, что это может помочь вам.
Этот скрипт анализирует дерево каталогов в поисках модулей и пакетов python и создает файлы ReST соответствующим образом для создания документации кода с помощью Sphinx. Это также создает индекс модулей.
ОБНОВИТЬ
Этот скрипт теперь является частью Sphinx 1.1 как apidoc .
источник
sphinx-build -b html . ./_build
не подхватил их.source directory
(. В вашем случае). Каталог _build - это место, где будут создаваться файлы HTML. Проверьте для получения дополнительной информации: sphinx.pocoo.org/tutorial.html#running-the-build.. include:: modules.rst
в свойindex.rst
Я не знаю, имел ли Сфинкс
autosummary
расширение в то время, когда был задан оригинальный вопрос, но сейчас вполне возможно настроить автоматическую генерацию такого рода без использованияsphinx-apidoc
или подобного сценария. Ниже приведены настройки, которые работают для одного из моих проектов.Включить
autosummary
расширение (а такжеautodoc
) вconf.py
файле и установить егоautosummary_generate
опциюTrue
. Этого может быть достаточно, если вы не используете пользовательские*.rst
шаблоны. В противном случае добавьте каталог шаблонов, чтобы исключить список, илиautosummary
попытайтесь обработать их как входные файлы (что кажется ошибкой).Используйте
autosummary::
в дереве TOC в вашемindex.rst
файле. В этом примере документация для модулейproject.module1
иproject.module2
будет сгенерирована автоматически и помещена в_autosummary
каталог.По умолчанию
autosummary
генерируются только очень короткие сводки для модулей и их функций. Чтобы изменить это, вы можете поместить собственный файл шаблона в_templates/autosummary/module.rst
(который будет проанализирован с помощью Jinja2 ):В заключение, нет необходимости держать
_autosummary
каталог под контролем версий. Кроме того, вы можете назвать его как угодно и поместить в любое место дерева исходных текстов (однако, размещение его ниже_build
не будет работать).источник
В каждой упаковке
__init__.py
файл может иметь.. automodule:: package.module
компоненты для каждой части пакета.Тогда вы можете,
.. automodule:: package
и это в основном делает то, что вы хотите.источник
__init__.py
файлы в ваших пакетах. Строка документации может содержать ЛЮБЫЕ директивы документации Sphinx, в том числе.. automodule::
для модулей в пакете.autodoc
это опечатка, так и должно бытьautomodule
. но большое спасибо за подсказку!С версии Sphinx 3.1 (июнь 2020 г.),
sphinx.ext.autosummary
(наконец-то!) Появилась рекурсия.Поэтому нет необходимости жестко кодировать имена модулей или полагаться на сторонние библиотеки, такие как Sphinx AutoAPI или Sphinx AutoPackageSummary. для автоматического определения пакетов.
Пример пакета Python 3.7 для документа ( см. Код на Github и результат на ReadTheDocs ):
conf.py
:index.rst
(обратите внимание на новую:recursive:
опцию):Этого достаточно для автоматического суммирования каждого модуля в пакете, как бы глубоко он ни был вложен. Для каждого модуля он суммирует каждый атрибут, функцию, класс и исключение в этом модуле.
Как ни странно, по умолчанию
sphinx.ext.autosummary
шаблоны не генерируют отдельные страницы документации для каждого атрибута, функции, класса и исключения и ссылаются на них из сводных таблиц. Для этого можно расширить шаблоны, как показано ниже, но я не могу понять, почему это не поведение по умолчанию - конечно, это то, что большинство людей хотели бы ..? Я поднял это как запрос функции .Мне пришлось скопировать шаблоны по умолчанию локально, а затем добавить к ним:
site-packages/sphinx/ext/autosummary/templates/autosummary/module.rst
вmytoolbox/doc/source/_templates/custom-module-template.rst
site-packages/sphinx/ext/autosummary/templates/autosummary/class.rst
вmytoolbox/doc/source/_templates/custom-class-template.rst
Крюк
custom-module-template.rst
вindex.rst
выше, используя:template:
опцию. (Удалите эту строку, чтобы увидеть, что происходит с использованием стандартных шаблонов сайтов-пакетов.)custom-module-template.rst
(дополнительные строки отмечены справа):custom-class-template.rst
(дополнительные строки отмечены справа):источник
Sphinx AutoAPI делает именно это.
источник
Может быть, вы ищете Epydoc и это расширение Sphinx .
источник