Сфинкс Автодок не хватает автоматического
Я пытаюсь использовать Sphinx для документирования проекта 5,000 + line в Python. Она имеет около 7 базовых модулей. Насколько я знаю, для использования autodoc мне нужно написать такой код для каждого файла в моем проекте:
.. automodule:: mods.set.tests
:members:
:show-inheritance:
Это слишком утомительно, потому что у меня много файлов. Было бы намного проще, если бы я мог просто указать, что я хочу, чтобы пакет "mods" был документирован. Затем Sphinx может рекурсивно пройти через пакет и создать страницу для каждого подмодуля.
Is есть такая функция? Если бы не я мог написать сценарий, чтобы сделать все.первые файлы, но это займет много времени.
4 ответа:
вы можете проверить это script что я сделал. Я думаю, что это может помочь вам.
этот скрипт анализирует дерево каталогов, ищет модули и пакеты python и создает файлы ReST соответствующим образом для создания документации по коду с помощью Sphinx. Он также создает индекс модулей.
обновление
этот скрипт теперь является частью Sphinx 1.1 Как apidoc.
я не знаю, был ли Сфинкс
autosummary
расширение в то время был задан оригинальный вопрос, но на данный момент вполне возможно настроить автоматическую генерацию такого рода без использованияsphinx-apidoc
или похожий скрипт. Ниже есть настройки, которые работают для одного из моих проектов.
включить до
True
. Это может быть достаточно, если вы не используете пользовательские*.rst
шаблоны. В противном случае добавьте каталог шаблонов в список исключений илиautosummary
будет пытаться рассматривать их как входные файлы (что, кажется, ошибка).extensions = ['sphinx.ext.autodoc', 'sphinx.ext.autosummary'] autosummary_generate = True templates_path = [ '_templates' ] exclude_patterns = ['_build', '_templates']
использовать
autosummary::
в дереве TOC в вашем . В этом примере документация для модулейproject.module1
иproject.module2
будет сгенерирован автоматически и помещен в .PROJECT ======= .. toctree:: .. autosummary:: :toctree: _autosummary project.module1 project.module2
по умолчанию
autosummary
будет генерировать только очень короткие резюме для модули и их функции. Чтобы изменить это, вы можете поместить пользовательский файл шаблона в_templates/autosummary/module.rst
(который будет разбираться с Jinja2):{{ fullname }} {{ underline }} .. automodule:: {{ fullname }} :members:
в заключение, нет необходимости держать
_autosummary
каталог под контролем версий. Кроме того, вы можете назвать его все, что хотите, и поместить его в любом месте в исходном дереве (поставив его ниже_build
не будет работать, хотя).
В каждой упаковке, может быть
.. automodule:: package.module
компоненты для каждой части пакета.тут вы можете
.. automodule:: package
и он в основном делает то, что вы хотите.
может, то, что вы ищете-это Epydoc и расширение Сфинкс.