Търся автоматично документиране на някои функции в модул на Python, използвайки autofunction
. Да кажем, например, че функциите са дефинирани в mylib/funcs/a.py
и този файл изглежда по следния начин:
def myfunc(arg):
""" My function does something """
return
Моето намерение е потребителите да извикат тази функция от корена на библиотеката, а не от този път на файл/модул. С други думи mylib.myfunc
вместо mylib.funcs.a.myfunc
.
Въпреки това, поради причини извън обхвата на този въпрос, в които предпочитам да не навлизам, когато направите import mylib; mylib.myfunc
или направите from mylib import myfunc
, това не сочи към действителната функция, където е документалният низ.
Мога да накарам функцията да автоматично документира така:
..currentmodule:: mylib.funcs.a
..autofunction:: myfunc
Получената документация обаче има подпис, който изглежда като mylib.funcs.a.myfunc
. Бих искал просто да е mylib.myfunc
.
Ако не използвах autodoc, можех да направя нещо подобно в моите документи на sphinx:
.. function:: myfunc(arg)
:module: mylib
Предполагам, че въпросът ми е следният: Има ли начин за „псевдоним“ или промяна на етикета на модул, когато използвате autodoc за функция? Разгледах събитията за предварителна обработка за обработка на docstring и подписа, но те изглежда не ви позволяват да промените начина, по който се показва модулът.
mylib/__init__.py
, където импортирате функцията? Може би тези въпроси ще помогнат: stackoverflow.com/q/15115514/407651, stackoverflow.com/q/22096187/407651 - person mzjn   schedule 15.05.2019__init__.py
, сочи към различна функция def/docstring. Това е малко странна настройка, но не мисля, че методът__init__.py
ще работи. Опитах да настроя__module__
на различни места, надявайки се, че ще проработи, но и това не успях. - person Matt Dodge   schedule 15.05.2019