Como faço para usar o Sphinx com o Cython?

Eu tenho recentemente Cythonized um projeto meu, renomeando todos os módulos (exceto para o nível superior__init__.py) para*.pyxe colocandoext_modules = [Extension('foo', ['foo.pyx'])] emsetup.py. Construir e instalar funciona bem. No entanto, quando eu façocd doc; make html, O Sphinx falha porque não pode importar nenhum dos módulos que estão agora*.pyx.

Se eu editardoc/conf.py e mudarsys.path.insert(0, os.path.abspath('..')) parasys.path.insert(0, os.path.abspath('../build/temp.linux-x86_64-2.7')), então o Sphinx pode encontrar todos os módulos e pode gerar documentação, mas nesse caso eu recebo erros comoerror while formatting arguments for foo.bar: <built-in function bar> is not a Python function. Presumivelmente, isso acontece porque agora o Sphinx tem acesso apenas ao*.so arquivos, não os arquivos de origem. O mesmosys.path A modificação também permite executar os doctests via Sphinx (make doctest).

A outra solução que tentei foi usar a extensão*.py ao invés de*.pyx (e usandoext_modules = [Extension('foo', ['foo.py'])] emsetup.py). Nesse caso, a documentação é compilada corretamente, mas acho que os doctests agora ignoram o Cython.

Eu não consegui encontrar nenhuma informação on-line sobre o uso do Sphinx e do Cython juntos. Eu olhei para código-fonte para alguns projetos que usam ambos, mas eles não parecem fazer uso de docstrings no*.pyx arquivos. Eu sei que Sage faz, mas esse projeto é muito complicado para eu separar.

O Sphinx suporta docstrings em arquivos Cython? Se sim, como faço isso funcionar?

questionAnswers(3)

yourAnswerToTheQuestion