Я ищу autodoc некоторые функции в модуле 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 для функции? Я просмотрел события предварительной обработки для обработки строки документации и подписи, но они, похоже, не позволяют вам изменить способ отображения модуля.
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