Автогенерация документации для проекта 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. Я не мог найти ... все что угодно ради этого.
мой главный вопрос: есть ли более простой способ автогенерации этой документации?
2 ответов
sphinx-apidoc -F -o source .
будет генерировать проект с помощью Sphinx-quickstart и рекурсивно искать модули python
вы примерно так же эффективны, как вы можете быть в данный момент.
=== только желаемое за действительное ниже здесь ===
было бы здорово, если бы вы могли назвать что-то вроде
./setup.py build_sphinx -C
и это создаст вам индекс.Во-первых, прочитайте все первые файлы, которые у вас были, разберите все документы и выплюните html.
направить setup.py
таким образом, он содержит дополнительную команду для Sphinx, вы можете создать пользовательскую команду. Я подготовил небольшой пример, который запускает Sphinx apidoc, а затем создает источники doc. Имя проекта, автор, версия и расположение источников, определенных в 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, но это поможет вам начать.