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

должен сделать свое дело.

Другие вопросы по тегам