2015-07-24 4 views
3

Я хочу, чтобы включать в себя Setuptools команду для запуска Сфинкса doctest как часть моего пакета setup.py, как это:Как я могу использовать доктрины Sphinx как часть setup.py?

$ python setup.py sphinx_doctest 

У меня есть структура пакетов, например:

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 

Как можно реализовать команда Setuptools, что делает эквивалент:

$ sphinx-build -b doctest -d docs/build/doctrees docs/source docs/build 

ответ

2

Подкласс setuptools.Command и использовать sphinx.application.Sphinx для запуска sphinx.ext.doctest строитель.

В 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, 
    }, 
) 
Смежные вопросы