Документация Autogenerate для проекта Python с помощью setuptools
Я создал демонстрационный проект, который использует setuptools и имеет следующую структуру:
project/
|- pizza/
| |- __init__.py
| `- margherita.py
|
|- README.rst
|- setup.cfg
`- setup.py
Я пытаюсь автогенерировать документацию для этого проекта с помощью Sphinx. До сих пор я пробовал:
# Generate a sphinx template
sphinx-quickstart
# Use default settings, except for project name, etc.
sphinx-apidoc -o source .
./setup.py build_sphinx
Я считаю, что должен быть более простой способ автогенерировать эту документацию с помощью README
, setup.py
и docstrings.
В конечном итоге я хотел бы автогенерировать apidocs для другого проекта, где я также использую Python C-api. Я ничего не мог найти для этого.
Мой главный вопрос: есть ли более простой способ автогенерировать эту документацию?
Ответы
Ответ 1
sphinx-apidoc -F -o source .
Будет генерировать проект с помощью sphinx-quickstart и рекурсивно искать модули python
Вы так же эффективны, как и сейчас.
=== Просто желаемое представление ниже здесь ===
Не было бы прекрасно, если бы вы могли назвать что-то вроде
./setup.py build_sphinx -C
и это создаст вам index.RST, прочитает любые RST файлы, с которыми вы столкнулись, проанализируйте все докстоки и выплюните какой-нибудь html.
Ответ 2
Чтобы расширить setup.py
, поэтому он содержит дополнительную команду для Sphinx, вы можете создать пользовательскую команду. Я подготовил небольшой пример, который запускает Sidix Apidoc, а затем создает источники документов. Имя проекта, автор, версия и расположение источников, определенных в setup.py
, используются (если они определены).
class Sphinx(Command):
user_options = []
description = 'sphinx'
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
# metadata contains information supplied in setup()
metadata = self.distribution.metadata
# package_dir may be None, in that case use the current directory.
src_dir = (self.distribution.package_dir or {'': ''})['']
src_dir = os.path.join(os.getcwd(), src_dir)
# Run sphinx by calling the main method, '--full' also adds a conf.py
sphinx.apidoc.main(
['', '--full', '-H', metadata.name, '-A', metadata.author,
'-V', metadata.version, '-R', metadata.version,
'-o', os.path.join('doc', 'source'), src_dir])
# build the doc sources
sphinx.main(['', os.path.join('doc', 'source'),
os.path.join('doc', 'build')])
Затем команда должна быть зарегистрирована в группе точек входа distutils.commands
. Здесь команда называется sphinx
.
from setuptools import setup
setup(
# ...
setup_requires = ['sphinx'],
entry_points = {
'distutils.commands': [
'sphinx = example_module:Sphinx'
]
}
)
Я не знаю, как обрабатываются источники C, но это поможет вам начать.