async def async_select_or_reject(args, kwargs, modfunc, lookup_attr): seq, func = filters.prepare_select_or_reject(args, kwargs, modfunc, lookup_attr) if seq: async for item in auto_aiter(seq): if func(item): yield item
async def async_select_or_reject(args, kwargs, modfunc, lookup_attr): seq, func = filters.prepare_select_or_reject( args, kwargs, modfunc, lookup_attr) if seq: async for item in auto_aiter(seq): if func(item): yield item
async def customfilter(iterable): items = [] async for item in auto_aiter(iterable): items.append(str(item)) if len(items) == 3: break return ",".join(items)
async def do_sum(environment, iterable, attribute=None, start=0): rv = start if attribute is not None: func = filters.make_attrgetter(environment, attribute) else: func = lambda x: x async for item in auto_aiter(iterable): rv += func(item) return rv
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)
async def do_map(*args, **kwargs): seq, func = filters.prepare_map(args, kwargs) if seq: async for item in auto_aiter(seq): yield await auto_await(func(item))
def test_async_iteration_in_templates_extended(): t = Template("{% for x in rng %}{{ loop.index0 }}/{{ x }}{% endfor %}", enable_async=True) stream = t.generate(rng=auto_aiter(range(1, 4))) assert next(stream) == "0" assert "".join(stream) == "/11/22/3"