У меня есть пакет Python, который я пытаюсь задокументировать с помощью sphinx-autodoc. В моем пакете python есть __init__.py
файл, который импортирует класс из подмодуля, чтобы сделать его доступным на уровне пакета.
from a.b.c.d import _Foo as Foo
__all__ = ["Foo"]
Если я это сделаю, моя (html) документация будет следующей:
Пакет a.b.c
Подмодули
Модуль a.b.c.d
[фрагмент документации нерелевантных общедоступных классов в модуле a.b.c.d]
Содержание модуля
Модуль c.
a.b.c. Фу
псевдоним _Foo
Не очень полезно, поскольку _Foo
(справедливо) недокументирован, поскольку это частный класс в подмодуле a.b.c.d.
Я могу добавить к моему conf.py
следующее, что гарантирует, что определение класса private в модуле задокументировано.
def skip(app, what, name, obj, skip, options):
if name == "_Foo":
return False
return skip
Другая альтернатива, но не лучшие вещи, которые я пробовал:
- Переименуйте
a.b.c.d._Foo
вa.b.c.d.Foo
(а затем обновите импорт доfrom a.b.c.d import Foo
), но затем я получаю документ, задокументированный дважды, один раз в заголовке abcd module и еще раз в разделе Содержимое модуля сильный> заголовок. - Переименование
a.b.c.d.Foo
вa.b.c.d.MyFoo
и последующий импорт (from a.b.c.d import MyFoo as Foo
) приводит к тому, чтоMyFoo
документируется, аFoo
указывается как псевдонимMyFoo
.
В идеале я бы хотел, чтобы частное определение оставалось недокументированным, но чтобы версия, импортированная в пакет, была полностью документирована. Кто-нибудь знает, как я могу этого добиться?