Как заставить apidocs использовать пакеты вместо модулей в sphinx-apidoc
Я использую строки документации для документирования кода Python и sphinx-autodoc для создания HTML-кода apidoc. Структура моих пакетов следующая: mainpackage.subpackage.module
Я хочу, чтобы apidocs связывался с классами из модуля как mainpackage.subpackage.Class
и не mainpackage.subpackage.module.Class
, Моя проблема исходит от проекта scikit-multilearn, например: у меня есть MLClassifierBase
класс в skmultilearn.base.base
, но я импортирую это в __init__.py
в skmultilearn.base
и я хочу, чтобы генерируемые сфинксами апидоки использовали этот класс только как skmultilearn.base.MLClassifierBase
и не skmultilearn.base.base.MLClassifierBase
как сейчас. Может кто-нибудь помочь?
Я уже попробовал:
задавать
add_module_names = False
вconf.py
per Sphinx apidoc - не печатать полный путь к пакетам и модулямдобавленной
""".. automodule:: base"""
вskmultilearn/base/__init__.py
добавленной
__all__ = ['MLClassifierBase']
вskmultilearn/base/__init__.py
добавленной
.. autoclass:: base.MLClassifierBase
к классу документов
У меня все еще есть Bases: skmultilearn.base.base.MLClassifierBase в каждом классе, производном от MLClassifierBase
, Как мне это изменить?
1 ответ
Я нашел решение:
"""
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"]
Он производит документацию для base.ProblemTransformationBase
и не base.base.ProblemTransformationBase
, Вы должны иметь три элемента в целом __init__.py
:
- определение
:mod:
упоминается везде - импорт классов
- имена классов в `all``