Próbuję automatycznie generować podstawową dokumentację dla mojej bazy kodów za pomocą Sphinx. Mam jednak trudności z instruktażem Sphinx do rekurencyjnego skanowania moich plików.Automatyczne generowanie dokumentacji dla wszystkich zawartości pakietu Python
Mam Python codebase o strukturze folderów jak:
<workspace>
src
mypackage
__init__.py
subpackageA
__init__.py
submoduleA1
submoduleA2
subpackageB
__init__.py
submoduleB1
submoduleB2
Pobiegłem sfinks-QuickStart w <workspace>
, więc teraz moja konstrukcja wygląda następująco:
<workspace>
src
mypackage
__init__.py
subpackageA
__init__.py
submoduleA1
submoduleA2
subpackageB
__init__.py
submoduleB1
submoduleB2
index.rst
_build
_static
_templates
Czytałem quickstart tutorial http://sphinx.pocoo.org/tutorial.html, i chociaż wciąż próbuję zrozumieć dokumenty, sposób w jaki jest napisany sprawia, że jestem zaniepokojony, że Sphinx zakłada, że zamierzam ręcznie tworzyć pliki dokumentacji dla każdego modułu/klasy/funkcji w mojej bazie kodów.
Zauważyłem jednak komunikat "automodule" i włączyłem autodoc podczas szybkiego startu, więc mam nadzieję, że większość dokumentacji może zostać wygenerowana automatycznie. Zmodyfikowałem plik conf.py, dodając mój folder src do sys.path, a następnie zmodyfikowałem plik index.rst, aby użyć automodułu. Teraz mój index.rst wygląda następująco:
Contents:
.. toctree::
:maxdepth: 2
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
.. automodule:: alphabuyer
:members:
Mam kilkadziesiąt klas i funkcji zdefiniowanych w podpakietach. Jednak, gdy biegnę:
sphinx-build -b html . ./_build
zgłasza:
updating environment: 1 added, 0 changed, 0 removed
I to wydaje się, że nie udało się zaimportować niczego w moim pakiecie. Wyświetlanie wygenerowanego pliku index.html nic nie pokazuje obok "Treści:". Strona Index pokazuje tylko "mypackage (moduł)", ale kliknięcie go pokazuje również, że nie ma żadnej zawartości.
W jaki sposób kierujesz Sphinx, aby rekurencyjnie analizował pakiet i automatycznie generuje dokumentację dla każdej klasy/metody/funkcji, z którą się spotyka, bez potrzeby ręcznego wymieniania każdej klasy osobiście?
Ten wydaje się bardziej jak musztarda po obiedzie na jakiś zupełnie niepowiązanych projektu. Nie wydaje się nawet żadnej dokumentacji użytkowej dla samego narzędzia. – Cerin
Nie ma sposobu robienia tego, co chcesz, tylko z Sfinksem waniliowym. Potrzebujemy czegoś więcej, a apigen.py jest dobrym kandydatem. Dlaczego ma to znaczenie, jeśli jest "niezwiązane" lub "po nucie"? Narzędzie nie jest starannie zapakowane i skrupulatnie udokumentowane, ale nie jest też niezwykle skomplikowane. Zacznij od zaadaptowania krótkiego głównego skryptu, build_modref_templates.py. Ten skrypt importuje klasę ApiDocWriter z apigen.py, która wykonuje całą ciężką pracę. – mzjn
Jestem zaniepokojony tym, że jest to refleksja, ponieważ ponieważ jest to dodatek do biblioteki Neuroobrazowania, twórcy koncentrują się na obrazowaniu Neuroobrazowym, a nie na pracy apigen.py dla ogółu społeczeństwa. Jednak twój punkt widzenia na temat Sphinxa, który nie wspiera tego rodzaju automatyzacji, jest dobrze zrobiony. Skończyłem z https://bitbucket.org/etienned/sphinx-autopackage-script, który jest dedykowany do tego zadania, chociaż jestem pewien, że prawdopodobnie apigen.py również by działał. – Cerin