diff --git a/src/flask/app.py b/src/flask/app.py index eefd361a..484881f4 100644 --- a/src/flask/app.py +++ b/src/flask/app.py @@ -1,8 +1,9 @@ +import functools +import inspect import os import sys import weakref from datetime import timedelta -from inspect import iscoroutinefunction from itertools import chain from threading import Lock @@ -56,6 +57,20 @@ from .wrappers import Request from .wrappers import Response +if sys.version_info >= (3, 8): + iscoroutinefunction = inspect.iscoroutinefunction +else: + + def iscoroutinefunction(func): + while inspect.ismethod(func): + func = func.__func__ + + while isinstance(func, functools.partial): + func = func.func + + return inspect.iscoroutinefunction(func) + + def _make_timedelta(value): if value is None or isinstance(value, timedelta): return value