Sphinx apidoc - не печатать полный путь к пакетам и модулям
Я новичок в sphinx, и я пытаюсь использовать его как ссылку 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
... это сокращает заголовок, что и отображается в toctree. Единственным следствием является то, что заголовок на этой странице модуля также будет коротким именем, но это меня не беспокоило, так как и навигационная, и оглавление все еще дают понять, что такое родительский пакет.
В соответствии с именами классов/функций mzjin answer
установить add_module_names = False в conf.py
должен сделать трюк.