J'utilise sphinx et le plugin autodoc pour générer la documentation API pour mes modules Python. Bien que je puisse voir comment documenter joliment des paramètres spécifiques, je ne trouve pas d'exemple sur la façon de documenter un **kwargs
paramètre.
Quelqu'un a-t-il un bon exemple d'une manière claire de les documenter?
Réponses:
Je pense que
subprocess
la documentation de -module est un bon exemple. Donnez une liste exhaustive de tous les paramètres d'une classe supérieure / parent . Ensuite, reportez-vous simplement à cette liste pour toutes les autres occurrences de**kwargs
.la source
subprocess.call(*popenargs, **kwargs)
. Il est documenté commesubprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
où tout après le se*
trouve les clés reconnues dans**kwargs
(Ou du moins celles fréquemment utilisées)subprocess.Popen
et je ne suis pas sûr que ce soit plus un exemple particulièrement excellent.Après avoir trouvé cette question, je me suis installé sur ce qui suit, qui est valide Sphinx et fonctionne assez bien:
Le
r"""..."""
est nécessaire pour en faire une docstring "brute" et ainsi garder la docstring\*
intacte (pour que Sphinx le prenne comme un littéral*
et non comme le début de "l'emphase").La mise en forme choisie (liste à puces avec type entre parenthèses et description séparée par m tirets) est simplement pour correspondre à la mise en forme automatisée fournie par Sphinx.
Une fois que vous avez fait l'effort de faire en sorte que la section "Arguments des mots clés" ressemble à la section "Paramètres" par défaut, il semble qu'il pourrait être plus facile de déployer votre propre section de paramètres dès le départ (comme pour certaines des autres réponses) , mais comme preuve de concept, c'est une façon d'obtenir un joli look supplémentaire
**kwargs
si vous utilisez déjà Sphinx.la source
Docstrings Google Style analysés par Sphinx
Avertissement: non testé.
À partir de cette découpe de l' exemple de docstring sphinx , les
*args
et**kwargs
sont laissés non développés :Je suggérerais la solution suivante pour la compacité:
Remarquez comment,
Optional
n'est pas nécessaire pour les**key
arguments.Sinon , vous pouvez essayer de lister explicitement les * arguments sous
Other Parameters
et**kwargs
sous lesKeyword Args
(voir les sections analysées ):la source
Il y a un exemple doctstring pour Sphinx dans leur documentation. Plus précisément, ils montrent ce qui suit:
Bien que vous ayez posé des questions sur sphinxexplicitement, je voudrais également pointer vers le guide de style Google Python . Leur exemple docstring semble impliquer qu'ils n'appellent pas spécifiquement les kwargs. (other_silly_variable = Aucun)
ABB a une question sur la réponse acceptée consistant à référencer la documentation de gestion des sous-processus. Si vous importez un module, vous pouvez voir rapidement les docstrings du module via inspect.getsource.
Un exemple de l'interpréteur python utilisant la recommandation de Silent Ghost:
Bien entendu, vous pouvez également consulter la documentation du module via la fonction d'aide. Par exemple aide (sous-processus)
Je ne suis pas personnellement fan du sous-processus docstring pour kwargs à titre d'exemple, mais comme l'exemple Google, il ne répertorie pas les kwargs séparément, comme indiqué dans l'exemple de documentation Sphinx.
J'inclus cette réponse à la question d'ABB, car il convient de noter que vous pouvez consulter la source ou la documentation de n'importe quel module de cette façon pour obtenir des informations et de l'inspiration pour commenter votre code.
la source
other_silly_variable
n'est pas un argument kwargs, mais un argument tout à fait normal.Si quelqu'un d'autre recherche une syntaxe valide .. Voici un exemple de docstring. C'est comme ça que je l'ai fait, j'espère que cela vous est utile, mais je ne peux pas prétendre que c'est conforme à quoi que ce soit en particulier.
la source
Cela dépend du style de documentation que vous utilisez, mais si vous utilisez le style numpydoc , il est recommandé de documenter en
**kwargs
utilisantOther Parameters
.Par exemple, en suivant l'exemple de quornian:
Notez surtout qu'il est recommandé de donner les valeurs par défaut de kwargs, car celles-ci ne sont pas évidentes à partir de la signature de la fonction.
la source
Si vous cherchez comment faire cela dans le style numpydoc , vous pouvez simplement mentionner
**kwargs
dans la section Paramètres sans spécifier le type - comme illustré dans l' exemple numpydoc de l'extension sphinx napolean et docstring guide de pandas documentation sprint 2018.Voici un exemple que j'ai trouvé dans le guide du développeur LSST qui explique très bien quelle devrait être la description du
**kwargs
paramètre:Alternativement, en me basant sur ce que @Jonas Adler a suggéré, je trouve préférable de mettre le
**kwargs
et sa description dans laOther Parameters
section - même cet exemple du guide de documentation matplotlib suggère la même chose.la source