Jak używać Sphinxa z Cythonem?

Niedawno Cythonized mój projekt, zmieniając nazwę wszystkich modułów (z wyjątkiem najwyższego poziomu__init__.py) do*.pyxi kładącext_modules = [Extension('foo', ['foo.pyx'])] wsetup.py. Budowa i instalacja działa dobrze. Jednak kiedy to robięcd doc; make html, Sphinx zawodzi, ponieważ nie może zaimportować żadnego z modułów, które są teraz*.pyx.

Jeśli będę edytowaćdoc/conf.py i zmienićsys.path.insert(0, os.path.abspath('..')) dosys.path.insert(0, os.path.abspath('../build/temp.linux-x86_64-2.7')), następnie Sphinx może znaleźć wszystkie moduły i wygenerować dokumentację, ale w takim przypadku otrzymuję błędy takie jakerror while formatting arguments for foo.bar: <built-in function bar> is not a Python function. Prawdopodobnie jest tak, ponieważ teraz Sphinx ma dostęp tylko do*.so pliki, a nie pliki źródłowe. To samosys.path modyfikacja umożliwia również uruchamianie dokumentów przez Sphinx (make doctest).

Innym rozwiązaniem, którego próbowałem, było użycie rozszerzenia*.py zamiast*.pyx (i używającext_modules = [Extension('foo', ['foo.py'])] wsetup.py). W tym przypadku dokumentacja buduje się poprawnie, ale myślę, że doctests teraz pomijają Cythona.

Nie udało mi się znaleźć żadnych informacji online dotyczących używania Sphinx i Cython razem. Sprawdziłem kod źródłowy niektórych projektów, które używają obu, ale nie wydają się korzystać z docstrings w*.pyx pliki. Wiem, że Sage to robi, ale ten projekt jest zbyt skomplikowany, abym mógł go rozdzielić.

Czy Sphinx obsługuje dokumenty w plikach Cython? Jeśli tak, jak mam to zrobić?

questionAnswers(3)

yourAnswerToTheQuestion