{{tag>dev python code documentation}}
:TODO_DOCUPDATE:
====== Python : Génération de la documentation ======
La documentation embarquée dans le code (les docstrings) peut être extraite et mise en forme par le module pydoc.
Les conventions d'écriture des docstring sont abordées dans la [[https://peps.python.org/pep-0257/|PEP 257]].
[[dev/python/annotations|Les annotations de types]] (type hinting) participent également à la lisibilité et la documentation du code.
Comme pour les commentaires, la recommandation de longueur de ligne d'une docstring est de 72 caractères.
* class docstrings : Description des classes et des méthodes de classe. La docstring doit être placée immédiatement sous la classe ou la méthode avec une indentation d'un niveau
*
Le formatage général recommandé d'une docstring comprend:
* La description brève
* Un saut de ligne
* Le développement de la docstring
* Une ligne vide
"""Description brève
Corps de la docstring. On développe ici la documentation nécessaire à
l'exploitation correcte du code.
"""
# Notez la ligne vide séparant la docstring du code qui suivra ci-dessous
Des formatages particuliers peuvent être utilisés au sein de la doctring comme **reStructuredText**. Ils sont ensuite exploités par des outils tiers comme **Sphinx** pour générer de la documentation sous différents dormat (html, man etc) ou vérifier le code.
Ci-dessous un exemple de docstring formatée avec reStructuredText
"""Gets and prints the spreadsheet's header columns
:param file_loc: The file location of the spreadsheet
:type file_loc: str
:param print_cols: A flag used to print the columns to the console
(default is False)
:type print_cols: bool
:returns: a list of strings representing the header columns
:rtype: list
"""
===== Références =====
* https://www.tutorialspoint.com/documentation-generation-using-the-pydoc-module-in-python
* https://realpython.com/documenting-python-code/
* https://towardsdatascience.com/documenting-python-code-with-sphinx-554e1d6c4f6d?gi=4be44bfeb728
* https://sphinx-tutorial.readthedocs.io/step-1/
* https://docutils.sourceforge.io/rst.html#user-documentation
* https://thomas-cokelaer.info/tutorials/sphinx/rest_syntax.html
* https://www.devdungeon.com/content/restructuredtext-rst-tutorial-0
* https://www.datacamp.com/tutorial/docstrings-python
* https://gist.github.com/jesugmz/d83b5e9de7ccc16f71c02adf7d2f3f44