Sphinx ne génère pas de documentation pour __init __ (self) par défaut. J'ai essayé ce qui suit:
.. automodule:: mymodule
:members:
et
..autoclass:: MyClass
:members:
Dans conf.py, définir ce qui suit n'ajoute que la docstring __init __ (self) à la classe docstring ( la documentation de l'autodoc Sphinx semble convenir qu'il s'agit du comportement attendu, mais ne mentionne rien concernant le problème que j'essaie de résoudre):
autoclass_content = 'both'
python
python-sphinx
autodoc
Marbre Jacob
la source
la source
"both" Both the class’ and the __init__ method’s docstring are concatenated and inserted.
-> Par conséquent, ce ne devrait pas être seulement la__init__(self)
, mais aussi la classe docstring si vous en avez. Pouvez-vous fournir un cas de test car si c'est le cas, cela ressemble à un bogue, non?Réponses:
Voici trois alternatives:
Pour vous assurer que cela
__init__()
est toujours documenté, vous pouvez utiliserautodoc-skip-member
dans conf.py. Comme ça:Cela définit explicitement de
__init__
ne pas être ignoré (ce qui est par défaut). Cette configuration est spécifiée une fois et ne nécessite aucun balisage supplémentaire pour chaque classe de la source .rst.L'
special-members
option a été ajoutée dans Sphinx 1.1 . Cela permet aux membres "spéciaux" (ceux avec des noms comme__special__
) d'être documentés par autodoc.Depuis Sphinx 1.2, cette option prend des arguments ce qui la rend plus utile qu'elle ne l'était auparavant.
Utilisez
automethod
:Ceci doit être ajouté pour chaque classe (ne peut pas être utilisé avec
automodule
, comme indiqué dans un commentaire à la première révision de cette réponse).la source
special-members
fonctionne correctement en utilisantautomodule
. Utilisez:special-members: __init__
uniquement pour documenter__init__
.Vous étiez proche. Vous pouvez utiliser l'
autoclass_content
option dans votreconf.py
fichier:la source
autoclass_content = 'both'
option, qui a documenté la méthode init , mais cela a fait apparaître le résumé automatique deux fois.Au cours des dernières années, j'ai écrit plusieurs variantes de
autodoc-skip-member
callbacks pour divers projets Python non liés parce que je voulais des méthodes comme__init__()
,__enter__()
et__exit__()
pour apparaître dans ma documentation API (après tout, ces "méthodes spéciales" font partie de l'API et quel meilleur endroit pour les documenter que dans la docstring de la méthode spéciale).Récemment, j'ai pris la meilleure implémentation et l'ai intégrée à l'un de mes projets Python ( voici la documentation ). La mise en œuvre se résume à ceci:
Oui, il y a plus de documentation que de logique :-). L'avantage de définir un
autodoc-skip-member
rappel comme celui-ci par rapport à l'utilisation de l'special-members
option (pour moi) est que l'special-members
option permet également la documentation de propriétés comme__weakref__
(disponible sur toutes les classes de nouveau style, AFAIK) que je considère comme du bruit et pas du tout utiles. L'approche de rappel évite cela (car elle ne fonctionne que sur les fonctions / méthodes et ignore les autres attributs).la source
setup(app)
pour être exécutée par Sphinx.__init__
méthode a une docstring non vide. Le fait-il?Même s'il s'agit d'un article plus ancien, pour ceux qui le recherchent à partir de maintenant, il existe également une autre solution introduite dans la version 1.8. Selon la documentation , vous pouvez ajouter la
special-member
clé dans autodoc_default_options à votre fichierconf.py
.Exemple:
la source
C'est une variante qui ne comprend que
__init__
si elle a des arguments:la source