aboutsummaryrefslogtreecommitdiff
path: root/tests/functional/i/iterable_context_py36.py
blob: d50d3da981bf475b333b04418ab7463cc3470685 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# pylint: disable=missing-docstring,too-few-public-methods,unused-variable,unnecessary-comprehension
import asyncio

class AIter:
    async def __aiter__(self):
        for value in range(20):
            yield value

    async def to_list(self):
        values = [m async for m in self]
        other_values = [m for m in self] # [not-an-iterable]
        for value in self: # [not-an-iterable]
            yield value
        async for value in self:
            yield value


async def some_iter_func(number):
    """ emits 1 number per second  """
    for i in range(1, number):
        yield i
        await asyncio.sleep(1)


async def count_to(number):
    """ counts to n in async manner"""
    async for i in some_iter_func(number):
        print(i)


async def gen_values(num_values):
    for value in range(num_values):
        yield value


async def do_some_comprehensions():
    sets = {elem async for elem in gen_values(10)}
    lists = [elem async for elem in gen_values(10)]
    dicts = {elem: elem async for elem in gen_values(10)}
    gen = (elem async for elem in gen_values(10))
    return sets, lists, dicts, gen