web-dev-qa-db-fra.com

Comment puis-je croiser une fonction générée par l'autodoc dans Sphinx?

J'utilise la fonction Sphinx autodoc pour générer une documentation basée sur les docstrings de ma bibliothèque Python .

La syntaxe des références croisées se trouve ici

Une étiquette doit précéder la section afin de permettre à cette section d'être référencée à partir d'autres zones de la documentation.

Ce que j'ai, c'est un fichier .rst (ReStructeredText) pour une de mes classes. Il utilise

.. autoclass:: classname
    :members:

Pour générer de la documentation pour la classe.

Ma question est, comment pourrais-je référencer les méthodes générées automatiquement de la classe à partir d'un autre document .rst dans la documentation? Si j'essaie de placer une étiquette dans la docstring de la méthode, Sphinx se plaint. Si j'essaie de placer une étiquette avant l'en-tête de la méthode, Sphinx ne la reconnaît pas.

Existe-t-il un moyen simple de le faire, ou devrais-je écrire explicitement dans mon fichier de classe le nom de la méthode et le faire précéder d'une étiquette?

Voici un exemple de référence dans la [documentation Python 2 faisant ce dont j'ai besoin (je suppose qu'il a utilisé la fonctionnalité d'autodoc, bien que je ne sois pas sûr)

43
Matthew Stamy

Vous n'avez pas besoin d'ajouter d'étiquettes. Afin de faire référence à une classe Python classe, méthode ou autre objet documenté, utilisez le balisage fourni par le domaine Python .

Par exemple, ce qui suit définit une référence croisée à la méthode mymethod:

:py:meth:`mymodule.MyClass.mymethod`

Ou encore plus simple (puisque le domaine Python est le domaine par défaut):

:meth:`mymodule.MyClass.mymethod`

La documentation de TextWrapper.wrap que vous liez à la question comprend deux références croisées de ce type (cliquez sur "Afficher la source" pour voir le balisage reST).

58
mzjn