Merging upstream version 4.66.2.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
ec03e12832
commit
6759e100fe
61 changed files with 917 additions and 4364 deletions
|
@ -1,11 +1,129 @@
|
|||
"""Tests `tqdm.asyncio` on `python>=3.7`."""
|
||||
import sys
|
||||
"""Tests `tqdm.asyncio`."""
|
||||
import asyncio
|
||||
from functools import partial
|
||||
from sys import platform
|
||||
from time import time
|
||||
|
||||
if sys.version_info[:2] > (3, 6):
|
||||
from .py37_asyncio import * # NOQA, pylint: disable=wildcard-import
|
||||
else:
|
||||
from .tests_tqdm import skip
|
||||
try:
|
||||
skip("async not supported", allow_module_level=True)
|
||||
except TypeError:
|
||||
pass
|
||||
from tqdm.asyncio import tarange, tqdm_asyncio
|
||||
|
||||
from .tests_tqdm import StringIO, closing, mark
|
||||
|
||||
tqdm = partial(tqdm_asyncio, miniters=0, mininterval=0)
|
||||
trange = partial(tarange, miniters=0, mininterval=0)
|
||||
as_completed = partial(tqdm_asyncio.as_completed, miniters=0, mininterval=0)
|
||||
gather = partial(tqdm_asyncio.gather, miniters=0, mininterval=0)
|
||||
|
||||
|
||||
def count(start=0, step=1):
|
||||
i = start
|
||||
while True:
|
||||
new_start = yield i
|
||||
if new_start is None:
|
||||
i += step
|
||||
else:
|
||||
i = new_start
|
||||
|
||||
|
||||
async def acount(*args, **kwargs):
|
||||
for i in count(*args, **kwargs):
|
||||
yield i
|
||||
|
||||
|
||||
@mark.asyncio
|
||||
async def test_break():
|
||||
"""Test asyncio break"""
|
||||
pbar = tqdm(count())
|
||||
async for _ in pbar:
|
||||
break
|
||||
pbar.close()
|
||||
|
||||
|
||||
@mark.asyncio
|
||||
async def test_generators(capsys):
|
||||
"""Test asyncio generators"""
|
||||
with tqdm(count(), desc="counter") as pbar:
|
||||
async for i in pbar:
|
||||
if i >= 8:
|
||||
break
|
||||
_, err = capsys.readouterr()
|
||||
assert '9it' in err
|
||||
|
||||
with tqdm(acount(), desc="async_counter") as pbar:
|
||||
async for i in pbar:
|
||||
if i >= 8:
|
||||
break
|
||||
_, err = capsys.readouterr()
|
||||
assert '9it' in err
|
||||
|
||||
|
||||
@mark.asyncio
|
||||
async def test_range():
|
||||
"""Test asyncio range"""
|
||||
with closing(StringIO()) as our_file:
|
||||
async for _ in tqdm(range(9), desc="range", file=our_file):
|
||||
pass
|
||||
assert '9/9' in our_file.getvalue()
|
||||
our_file.seek(0)
|
||||
our_file.truncate()
|
||||
|
||||
async for _ in trange(9, desc="trange", file=our_file):
|
||||
pass
|
||||
assert '9/9' in our_file.getvalue()
|
||||
|
||||
|
||||
@mark.asyncio
|
||||
async def test_nested():
|
||||
"""Test asyncio nested"""
|
||||
with closing(StringIO()) as our_file:
|
||||
async for _ in tqdm(trange(9, desc="inner", file=our_file),
|
||||
desc="outer", file=our_file):
|
||||
pass
|
||||
assert 'inner: 100%' in our_file.getvalue()
|
||||
assert 'outer: 100%' in our_file.getvalue()
|
||||
|
||||
|
||||
@mark.asyncio
|
||||
async def test_coroutines():
|
||||
"""Test asyncio coroutine.send"""
|
||||
with closing(StringIO()) as our_file:
|
||||
with tqdm(count(), file=our_file) as pbar:
|
||||
async for i in pbar:
|
||||
if i == 9:
|
||||
pbar.send(-10)
|
||||
elif i < 0:
|
||||
assert i == -9
|
||||
break
|
||||
assert '10it' in our_file.getvalue()
|
||||
|
||||
|
||||
@mark.slow
|
||||
@mark.asyncio
|
||||
@mark.parametrize("tol", [0.2 if platform.startswith("darwin") else 0.1])
|
||||
async def test_as_completed(capsys, tol):
|
||||
"""Test asyncio as_completed"""
|
||||
for retry in range(3):
|
||||
t = time()
|
||||
skew = time() - t
|
||||
for i in as_completed([asyncio.sleep(0.01 * i) for i in range(30, 0, -1)]):
|
||||
await i
|
||||
t = time() - t - 2 * skew
|
||||
try:
|
||||
assert 0.3 * (1 - tol) < t < 0.3 * (1 + tol), t
|
||||
_, err = capsys.readouterr()
|
||||
assert '30/30' in err
|
||||
except AssertionError:
|
||||
if retry == 2:
|
||||
raise
|
||||
|
||||
|
||||
async def double(i):
|
||||
return i * 2
|
||||
|
||||
|
||||
@mark.asyncio
|
||||
async def test_gather(capsys):
|
||||
"""Test asyncio gather"""
|
||||
res = await gather(*map(double, range(30)))
|
||||
_, err = capsys.readouterr()
|
||||
assert '30/30' in err
|
||||
assert res == list(range(0, 30 * 2, 2))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue