Подтвердить что ты не робот

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

4b9b3361

Ответ 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

должен сделать трюк.