2016-06-26 3 views
1

J'utilise docstrings pour documenter le code python et sphynx-autodoc pour générer HTMLs de APIDOC. La structure de mes paquets est la suivante: mainpackage.subpackage.module, je veux apidocs de lien vers les classes d'un module comme mainpackage.subpackage.Class et non mainpackage.subpackage.module.Class. Mon problème vient du projet scikit-multilearn, par exemple: j'ai une classe MLClassifierBase à skmultilearn.base.base, mais je l'importer dans __init__.py en skmultilearn.base, et je veux que les apidocs générés SPHINX utiliser uniquement cette classe comme skmultilearn.base.MLClassifierBase et non skmultilearn.base.base.MLClassifierBase comme fait maintenant. Quelqu'un peut-il aider?comment faire apidocs utiliser des paquets au lieu de modules-sphynx apidoc

Je l'ai déjà essayé:

  • mis add_module_names = False à conf.py par Sphinx apidoc - don't print full path to packages and modules

  • ajouté """.. automodule:: base"""-skmultilearn/base/__init__.py

  • ajouté __all__ = ['MLClassifierBase'] à skmultilearn/base/__init__.py

  • ad ded .. autoclass:: base.MLClassifierBase à la classe docs

Je suis toujours avoir un Bases: skmultilearn.base.base.MLClassifierBase dans chaque classe qui dérive de MLClassifierBase. Comment puis-je changer cela?

+0

Similaire à http://stackoverflow.com/q/15115514/407651 et http://stackoverflow.com/q/30856279/407651 – mzjn

Répondre

0

J'ai trouvé une solution:

""" 
The :mod:`skmultilearn.base` module implements base 
classifier classes for scikit-multilearn's multi-label classification. 
""" 

from .base import MLClassifierBase 
from .problem_transformation import ProblemTransformationBase 

__all__ = ["MLClassifierBase", 
      "ProblemTransformationBase"] 

Il produit des documents pour base.ProblemTransformationBase et non base.base.ProblemTransformationBase. Vous devez avoir les trois éléments alltogether dans votre __init__.py:

  • la définition de :mod: mentionné nulle part
  • les importations de classes
  • les noms des classes `tous` `