Sphinx apidoc - не печатать полный путь к пакетам и модулям
Я довольно новичок в сфинксе, и я пытаюсь использовать его в качестве ссылки API для моего проекта. Может быть, после этого в качестве проектной документации тоже.
Я генерирую это с помощью этих двух команд
sphinx-apidoc -e -o doc/api tracer
sphinx-build -b dirhtml doc/ build/doc/dirhtml
Существует проблема, что он производит это оглавление
- tracer package
- tracer.lang package
- tracer.lang.en module
- tracer.packageManagers package
- tracer.packageManagers.dnf module
- tracer.packageManagers.dpkg module
- tracer.packageManagers.portage module
- ...
- tracer.resources package
- tracer.resources.ProcessesList module
- tracer.resources.applications module
- tracer.resources.args_parser module
- ...
Это очень непонятный список причин ненужной избыточной информации. Так было бы намного лучше:
- tracer package
- lang package
- en module
- packageManagers package
- dnf module
- dpkg module
- portage module
- ...
- resources package
- ProcessesList module
- applications module
- args_parser module
- ...
а может даже лучше без package
или же module
ярлык на конце.
Во всяком случае, это выглядит не очень хорошо нигде. Например
class tracer.packageManagers.portage.Portage
Bases: tracer.packageManagers.ipackageManager.IPackageManager
было бы намного приятнее, чем
class Portage
Bases: IPackageManager
Я знаю, что полные имена могут быть хорошими в большом проекте, где имена модулей могут иметь одинаковые имена, но мне не нравится это в моем небольшом проекте. Можно ли как-то сказать apidoc генерировать короткие имена?
Не могли бы вы мне помочь?
Большое спасибо, FrostyX
1 ответ
Что касается оглавления, выполнение поиска / замены в исходной папке по всем *.rst файлам (после запуска sphinx-apidoc) - это то, что в итоге сработало для меня.
поиск:
^(?:[a-zA-Z0-9]*[.])*([a-zA-Z0-9]+) (package|module)
заменить:
\1 \2
... это сокращает заголовок, который отображается в дереве. Единственным последствием является то, что заголовок на странице этого модуля будет также коротким именем, но меня это не смущает, так как навигация и оглавление по-прежнему проясняют, что такое родительский пакет.
Согласно именам классов / функций, ответ Мзжина
set add_module_names = False в conf.py
должен сделать свое дело.