Я пытаюсь заставить Sphinx генерировать строки документации для функций, имеющих несколько декораторов. Я создал довольно простой тестовый пример для этой проблемы. У нас есть четыре файла:
server/__init__.py
server/test.py
utils/__init__.py
utils/test_decorators.py
Когда все декораторы находятся в одной локальной папке (то есть, когда структура имеет вид server/__init__.py,server/test.py и server/test_decorators.py) У Sphinx нет проблем с выбором строк документации, когда функция находится под двумя декораторами. Однако, когда эти декораторы перемещаются в отдельный модуль в другой папке, даже при абсолютном импорте, Sphinx внезапно оказывается неспособным найти строки документации, если они имеют глубину более одного уровня.
Код ниже:
server/__init__.py пуст
server/test.py:
from utils.test_decorators import my_decorator_1, my_decorator_2
from flask import Flask
app = Flask(__name__)
@my_decorator_1
def test_func_1(num):
'''
This is a test docstring. This one should appear
'''
print(num)
return
@my_decorator_1
@my_decorator_2
def test_func_2():
'''
This is also a test docstring for chained decorators.
'''
return 0
@app.route('/test_1')
def test_rest():
'''
This is a test docstring for single-level decorators using Flask.
'''
return "Hello, Flask!"
@app.route('/test_2')
@my_decorator_1
def home():
'''
This is a test docstring for chained decorators using Flask.
'''
return "Hello, Flask!"
if __name__ == '__main__':
app.run(debug=True)
utils/__init__.py пуст
utils/test_decorators.py:
import functools
from functools import wraps
def my_decorator_1(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
print("Before calling the function")
result = func(*args, **kwargs)
print("After calling the function")
return result
return wrapper
def my_decorator_2(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
print("Starting execution")
result = func(*args, **kwargs)
print("Execution finished")
return result
return wrapper
Подробнее здесь: https://stackoverflow.com/questions/791 ... f-theyve-b
Sphinx не получает функции из нескольких декораторов функций, если они были импортированы из модуля. ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Данные были импортированы в базу данных, но данные были потеряны [закрыто]
Anonymous » » в форуме MySql - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-