I want to include a setuptools command to run Sphinx doctest as part of my package setup.py, like this:
$ python setup.py sphinx_doctest
I have a package structure like:
my_pkg
|---__init__.py
|---module1.py # Containing reStructuredText docstrings with examples
docs
|---build
|---|---doctrees
|---source
|---|---conf.py # Sphinx config
|---|---index.rst # Sphinx index file
setup.py
How can I implement a setuptools command that does the equivalent of:
$ sphinx-build -b doctest -d docs/build/doctrees docs/source docs/build
Subclass setuptools.Command
and use sphinx.application.Sphinx
to launch the sphinx.ext.doctest builder.
In setup.py:
from setuptools import setup, Command
class Doctest(Command):
description = 'Run doctests with Sphinx'
user_options = []
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
from sphinx.application import Sphinx
sph = Sphinx('./docs/source', # source directory
'./docs/source, # directory containing conf.py
'./docs/build', # output directory
'./docs/build/doctrees', # doctree directory
'doctest') # finally, specify the doctest builder
sph.build()
sphinx_requires = ['sphinx>=1.3.1']
setup(
name='mypkg',
version='0.0.1',
description='My Package',
packages=['mypkg'],
cmdclass={
'doctests': Doctest
},
extras_require={
'build_sphinx': sphinx_requires,
},
)