Ceci est une ancienne révision du document !
Sphinx est un programme dédié à la génération de tous types de documentation associée à un projet:
Souvent on pense à Sphinx comme à un outil de génération de documentation technique pour Python capable d'extraire les docstrings du code afin de produire une documentation de référence en HTML.
Plus généralement Sphinx peut prendre en entrée tout type de document texte et produire une sortie lisible.
En général les fichiers texte en entrées utilisent le formatage reStructredText et la sortie produite par Sphinx est un ensemble de documents formatés en HTML.
# Création d'un environnement virtuel Python python3 -m venv env # Activer l'environnement source env/bin/activate # Installation de Sphinx pip install sphinx
Sphinx a besoin d'une arborescence spécifique pour fonctionner. La commande sphinx-quickstart
est interactive et se charge de créer ces répertoires et fichiers.
Par défaut la commande crée un dossier nommée source
pour accueillir la documentation. Pour éviter toute confusion surtout si Sphinx est utilisé pour documenter un projet de code, on peut sans problème renommer ce dossier :
mv source doc
Une fois le dossier renommé, il faut modifier la valeur de la variable SOURCEDIR du Makefile
et de make.bat
.
Pour valider l'installation et les paramétrages initiaux, on tente de générer la documentation :
# Générer la documentation make html # Consulter la documentation produite firefox build/html/index.html
Sphinx utilise par défaut le theme minimaliste Alabaster, un thème plus complet et populaire est disponible via pip :
pip install sphinx-rtd-theme
Pour remplacer le thème par défaut, éditer docs/conf.py
et remplacer la valeur de la variable html_theme
:
html_theme = 'sphinx_rtd_theme'
Les thèmes sont configurables. Confère la documentation du thème Read The Docs.
toctree::
et respecter l'indentation en s'alignant sous les paramètres.Hello World =========== Hello Sphinx !!!
Le fichier index.rst a le contenu suivant
.. toctree:: :maxdepth: 2 :caption: Contents: ./hello.rst
La directive toctree
permet de générer la table des matières (table of content).
:maxdepth:
spécifie le nombre de niveaux de titres à afficher dans la table. Avec une valeur 1 seul les titres de page seront présents dans l'index.:caption:
permet de définir le titre à afficher au dessus du sommaire ;La syntaxe reStructuredText, bien que proche de Markdown, est plus complète mais également plus stricte.
Pour l'essentiel :
Voici du texte en *italique*, en **gras**, et voici du ``code inline`` composant un premier paragraphe. Ce second paragraphe est séparé du premier par une ligne vide.
Pour une URL :
Syntaxe d'écrite d'une URL `mon titre <https://example.com>`_
<
;Sphinx a été conçu par la communauté Python pour les projets Python. Cependant il est utilisés par de nombreux autres projets opensource.
Sphinx utilise l'extension autodoc pour inclure les docstrings dans la documentation à produire.
reStructuredText est le formatage utilisé par défaut mais d'autre formatages peuvent être utilisés comme Markdown mais dans ce cas des extensions supplémentaires seront nécessaires.
Pour documenter l'ensemble des classes d'un module:
sphinx.ext.autodoc
) déclarée;:members:
.. automodule:: my_module_name :members:
sphinx.ext.doctest