summaryrefslogtreecommitdiff
path: root/src/jinja2/async_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/jinja2/async_utils.py')
-rw-r--r--src/jinja2/async_utils.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/jinja2/async_utils.py b/src/jinja2/async_utils.py
index cedd7ba..35e6cb1 100644
--- a/src/jinja2/async_utils.py
+++ b/src/jinja2/async_utils.py
@@ -44,7 +44,14 @@ def async_variant(normal_func): # type: ignore
return decorator
+_common_primitives = {int, float, bool, str, list, dict, tuple, type(None)}
+
+
async def auto_await(value: t.Union[t.Awaitable["V"], "V"]) -> "V":
+ # Avoid a costly call to isawaitable
+ if type(value) in _common_primitives:
+ return t.cast("V", value)
+
if inspect.isawaitable(value):
return await t.cast("t.Awaitable[V]", value)