]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Await in async version of the map filter (#913)
authorseaders <seaders@users.noreply.github.com>
Mon, 18 Feb 2019 07:14:47 +0000 (07:14 +0000)
committerArmin Ronacher <armin.ronacher@active-4.com>
Mon, 18 Feb 2019 07:14:47 +0000 (08:14 +0100)
jinja2/asyncfilters.py
tests/test_asyncfilters.py
tests/test_filters.py

index 5c1f46d7fa7d46cff7711321b477f287632ef5e1..cf051ddde68731f8a8933502a436988ab57f52c3 100644 (file)
@@ -1,6 +1,6 @@
 from functools import wraps
 
-from jinja2.asyncsupport import auto_aiter
+from jinja2.asyncsupport import auto_aiter, auto_await
 from jinja2 import filters
 
 
@@ -109,7 +109,7 @@ async def do_map(*args, **kwargs):
     seq, func = filters.prepare_map(args, kwargs)
     if seq:
         async for item in auto_aiter(seq):
-            yield func(item)
+            yield await auto_await(func(item))
 
 
 @asyncfiltervariant(filters.do_sum)
index 162cc6d4d73fc4d92921e94054421db0d774a314..55922ad6201b90e7515571c1f370f0c489fa7913 100644 (file)
@@ -173,6 +173,11 @@ def test_simple_map(env_async, items):
     assert tmpl.render(items=items) == '6'
 
 
+def test_map_sum(env_async):  # async map + async filter
+    tmpl = env_async.from_string('{{ [[1,2], [3], [4,5,6]]|map("sum")|list }}')
+    assert tmpl.render() == '[3, 3, 15]'
+
+
 @mark_dualiter('users', make_users)
 def test_attribute_map(env_async, users):
     tmpl = env_async.from_string('{{ users()|map(attribute="name")|join("|") }}')
index 946403bed893b14ef11183aee70ba67585250baf..60808f2edbd0243961f0fd4d406dfceca5497d97 100644 (file)
@@ -544,6 +544,10 @@ class TestFilter(object):
         tmpl = env.from_string('{{ ["1", "2", "3"]|map("int")|sum }}')
         assert tmpl.render() == '6'
 
+    def test_map_sum(self, env):
+        tmpl = env.from_string('{{ [[1,2], [3], [4,5,6]]|map("sum")|list }}')
+        assert tmpl.render() == '[3, 3, 15]'
+
     def test_attribute_map(self, env):
         class User(object):
             def __init__(self, name):