From: seaders Date: Mon, 18 Feb 2019 07:14:47 +0000 (+0000) Subject: Await in async version of the map filter (#913) X-Git-Tag: 2.11.0~99 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2b23cca8cf5fc72c8b5ad68bf0e48031e680dadf;p=thirdparty%2Fjinja.git Await in async version of the map filter (#913) --- diff --git a/jinja2/asyncfilters.py b/jinja2/asyncfilters.py index 5c1f46d7..cf051ddd 100644 --- a/jinja2/asyncfilters.py +++ b/jinja2/asyncfilters.py @@ -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) diff --git a/tests/test_asyncfilters.py b/tests/test_asyncfilters.py index 162cc6d4..55922ad6 100644 --- a/tests/test_asyncfilters.py +++ b/tests/test_asyncfilters.py @@ -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("|") }}') diff --git a/tests/test_filters.py b/tests/test_filters.py index 946403be..60808f2e 100644 --- a/tests/test_filters.py +++ b/tests/test_filters.py @@ -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):