Sphinx autodoc дублирует имя модуля и имя функции

У меня есть модуль Python со следующей структурой:

my_mod
|--- __init__.py
|--- mod1
|    |---- __init__.py
     |---- testA.py
     |---- testB.py
     |---- testC.py

Внутри каждого testX.py есть одна функция с именем testX. Эти функции большие, поэтому, чтобы мои файлы были управляемыми, я разделил testA, B и C. Чтобы избежать доступа к этим функциям таким образом:

import my_mod.mod1.testA.testA

Мой файл mod1/__init__.py структурирован следующим образом:

from .testA import testA
from .testB import testB
from .testC import testC

Итак, мои функции теперь доступны как

import my_mod.mod1.testA

Это ведет себя так, как ожидалось. Однако, когда я перехожу к autodoc моего модуля с Sphinx, документация пропускает эту функцию в __init__, и я заканчиваю тем, что мои функции задокументированы как

my_mod.mod1.testA.testA(blah, blah, blah)

Это не является фактическим использованием и не будет работать, если будет вызвано в реальном скрипте.

Есть ли способ для Сфинкса понять это? Или, если это не лучший способ структурировать мой модуль, чтобы размер моего файла был небольшим, но чтобы избежать дублирования имен при импорте?

Спасибо за помощь


person Kschau    schedule 01.02.2019    source источник
comment
Похоже на stackoverflow.com/q/15115514/407651.   -  person mzjn    schedule 02.02.2019
comment
@mzjn Переход по предоставленной ссылке не решает проблему. Создание __all__ в mod1/__init__.py сохраняет желаемое поведение импорта, но документация по-прежнему ссылается на путь к файлу каждой функции внутри testX.py, а не на путь импорта. .. automodule :: my_mod.mod1 тоже не имеет значения. Установка add_module_names=False действительно удаляет всю информацию о пути к файлу, немного очищая документацию... Спасибо за внимание   -  person Kschau    schedule 02.02.2019
comment
Возможно, это поможет: stackoverflow.com/a/24787344/407651. Если это не так, предоставьте минимально воспроизводимый пример.   -  person mzjn    schedule 02.02.2019