from functools import wraps
-from jinja2.asyncsupport import auto_aiter
+from jinja2.asyncsupport import auto_aiter, auto_await
from jinja2 import filters
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)
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("|") }}')
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):