mirror of
https://github.com/void-linux/void-packages.git
synced 2025-06-05 06:33:50 +02:00
python3-autocommand: update to 2.2.2.
This commit is contained in:
parent
0d10efa078
commit
6049b1b783
2 changed files with 3 additions and 288 deletions
|
@ -1,285 +0,0 @@
|
||||||
From 031c9750c74e3313b954b09e3027aaa6595649bb Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nathan West <Lucretiel@gmail.com>
|
|
||||||
Date: Thu, 18 Nov 2021 14:06:30 -0500
|
|
||||||
Subject: [PATCH] Fix out of date patterns in autocommand
|
|
||||||
|
|
||||||
- Use async def instead of asyncio.coroutine
|
|
||||||
- Use create_task instead of asyncio.async
|
|
||||||
- Use pytest.fixture instead of pytest.yield_fixture
|
|
||||||
---
|
|
||||||
src/autocommand/autoasync.py | 6 +--
|
|
||||||
test/test_autoasync.py | 95 ++++++++++++++++--------------------
|
|
||||||
test/test_autocommand.py | 6 +--
|
|
||||||
3 files changed, 49 insertions(+), 58 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/autocommand/autoasync.py b/src/autocommand/autoasync.py
|
|
||||||
index 3c8ebdc..2e6e28a 100644
|
|
||||||
--- a/src/autocommand/autoasync.py
|
|
||||||
+++ b/src/autocommand/autoasync.py
|
|
||||||
@@ -20,7 +20,7 @@
|
|
||||||
from inspect import signature
|
|
||||||
|
|
||||||
|
|
||||||
-def _launch_forever_coro(coro, args, kwargs, loop):
|
|
||||||
+async def _run_forever_coro(coro, args, kwargs, loop):
|
|
||||||
'''
|
|
||||||
This helper function launches an async main function that was tagged with
|
|
||||||
forever=True. There are two possibilities:
|
|
||||||
@@ -48,7 +48,7 @@ def _launch_forever_coro(coro, args, kwargs, loop):
|
|
||||||
# forever=True feature from autoasync at some point in the future.
|
|
||||||
thing = coro(*args, **kwargs)
|
|
||||||
if iscoroutine(thing):
|
|
||||||
- loop.create_task(thing)
|
|
||||||
+ await thing
|
|
||||||
|
|
||||||
|
|
||||||
def autoasync(coro=None, *, loop=None, forever=False, pass_loop=False):
|
|
||||||
@@ -127,7 +127,7 @@ def autoasync_wrapper(*args, **kwargs):
|
|
||||||
args, kwargs = bound_args.args, bound_args.kwargs
|
|
||||||
|
|
||||||
if forever:
|
|
||||||
- _launch_forever_coro(coro, args, kwargs, local_loop)
|
|
||||||
+ local_loop.create_task(_run_forever_coro(coro, args, kwargs, local_loop))
|
|
||||||
local_loop.run_forever()
|
|
||||||
else:
|
|
||||||
return local_loop.run_until_complete(coro(*args, **kwargs))
|
|
||||||
diff --git a/test/test_autoasync.py b/test/test_autoasync.py
|
|
||||||
index 6ffb782..dfeb019 100644
|
|
||||||
--- a/test/test_autoasync.py
|
|
||||||
+++ b/test/test_autoasync.py
|
|
||||||
@@ -20,6 +20,10 @@
|
|
||||||
asyncio = pytest.importorskip('asyncio')
|
|
||||||
autoasync = pytest.importorskip('autocommand.autoasync').autoasync
|
|
||||||
|
|
||||||
+class YieldOnce:
|
|
||||||
+ def __await__(self):
|
|
||||||
+ yield
|
|
||||||
+
|
|
||||||
|
|
||||||
@contextmanager
|
|
||||||
def temporary_context_loop(loop):
|
|
||||||
@@ -35,7 +39,7 @@ def temporary_context_loop(loop):
|
|
||||||
asyncio.set_event_loop(old_loop)
|
|
||||||
|
|
||||||
|
|
||||||
-@pytest.yield_fixture
|
|
||||||
+@pytest.fixture
|
|
||||||
def new_loop():
|
|
||||||
'''
|
|
||||||
Get a new event loop. The loop is closed afterwards
|
|
||||||
@@ -44,7 +48,7 @@ def new_loop():
|
|
||||||
yield loop
|
|
||||||
|
|
||||||
|
|
||||||
-@pytest.yield_fixture
|
|
||||||
+@pytest.fixture
|
|
||||||
def context_loop():
|
|
||||||
'''
|
|
||||||
Create a new event loop and set it as the current context event loop.
|
|
||||||
@@ -63,29 +67,27 @@ def context_loop():
|
|
||||||
def test_basic_autoasync(context_loop):
|
|
||||||
data = set()
|
|
||||||
|
|
||||||
- @asyncio.coroutine
|
|
||||||
- def coro_1():
|
|
||||||
+ async def coro_1():
|
|
||||||
data.add(1)
|
|
||||||
- yield
|
|
||||||
+ await YieldOnce()
|
|
||||||
data.add(2)
|
|
||||||
|
|
||||||
return 1
|
|
||||||
|
|
||||||
- @asyncio.coroutine
|
|
||||||
- def coro_2():
|
|
||||||
+ async def coro_2():
|
|
||||||
data.add(3)
|
|
||||||
- yield
|
|
||||||
+ await YieldOnce()
|
|
||||||
data.add(4)
|
|
||||||
|
|
||||||
return 2
|
|
||||||
|
|
||||||
@autoasync
|
|
||||||
- def async_main():
|
|
||||||
- task1 = asyncio.async(coro_1())
|
|
||||||
- task2 = asyncio.async(coro_2())
|
|
||||||
+ async def async_main():
|
|
||||||
+ task1 = asyncio.create_task(coro_1())
|
|
||||||
+ task2 = asyncio.create_task(coro_2())
|
|
||||||
|
|
||||||
- result1 = yield from task1
|
|
||||||
- result2 = yield from task2
|
|
||||||
+ result1 = await task1
|
|
||||||
+ result2 = await task2
|
|
||||||
|
|
||||||
assert result1 == 1
|
|
||||||
assert result2 == 2
|
|
||||||
@@ -99,19 +101,19 @@ def async_main():
|
|
||||||
def test_custom_loop(context_loop, new_loop):
|
|
||||||
did_bad_coro_run = False
|
|
||||||
|
|
||||||
- @asyncio.coroutine
|
|
||||||
- def bad_coro():
|
|
||||||
+ async def bad_coro():
|
|
||||||
nonlocal did_bad_coro_run
|
|
||||||
did_bad_coro_run = True
|
|
||||||
- yield
|
|
||||||
+ await YieldOnce()
|
|
||||||
|
|
||||||
- asyncio.async(bad_coro())
|
|
||||||
+ # TODO: this fires a "task wasn't awaited" warning; figure out how to
|
|
||||||
+ # supress
|
|
||||||
+ context_loop.create_task(bad_coro())
|
|
||||||
|
|
||||||
@autoasync(loop=new_loop)
|
|
||||||
- @asyncio.coroutine
|
|
||||||
- def async_main():
|
|
||||||
- yield
|
|
||||||
- yield
|
|
||||||
+ async def async_main():
|
|
||||||
+ await YieldOnce()
|
|
||||||
+ await YieldOnce()
|
|
||||||
return 3
|
|
||||||
|
|
||||||
assert async_main() == 3
|
|
||||||
@@ -120,9 +122,7 @@ def async_main():
|
|
||||||
|
|
||||||
def test_pass_loop(context_loop):
|
|
||||||
@autoasync(pass_loop=True)
|
|
||||||
- @asyncio.coroutine
|
|
||||||
- def async_main(loop):
|
|
||||||
- yield
|
|
||||||
+ async def async_main(loop):
|
|
||||||
return loop
|
|
||||||
|
|
||||||
assert async_main() is asyncio.get_event_loop()
|
|
||||||
@@ -134,9 +134,7 @@ def test_pass_loop_prior_argument(context_loop):
|
|
||||||
still passed correctly
|
|
||||||
'''
|
|
||||||
@autoasync(pass_loop=True)
|
|
||||||
- @asyncio.coroutine
|
|
||||||
- def async_main(loop, argument):
|
|
||||||
- yield
|
|
||||||
+ async def async_main(loop, argument):
|
|
||||||
return loop, argument
|
|
||||||
|
|
||||||
loop, value = async_main(10)
|
|
||||||
@@ -146,9 +144,8 @@ def async_main(loop, argument):
|
|
||||||
|
|
||||||
def test_pass_loop_kwarg_only(context_loop):
|
|
||||||
@autoasync(pass_loop=True)
|
|
||||||
- @asyncio.coroutine
|
|
||||||
- def async_main(*, loop, argument):
|
|
||||||
- yield
|
|
||||||
+ async def async_main(*, loop, argument):
|
|
||||||
+ await YieldOnce()
|
|
||||||
return loop, argument
|
|
||||||
|
|
||||||
loop, value = async_main(argument=10)
|
|
||||||
@@ -157,48 +154,43 @@ def async_main(*, loop, argument):
|
|
||||||
|
|
||||||
|
|
||||||
def test_run_forever(context_loop):
|
|
||||||
- @asyncio.coroutine
|
|
||||||
- def stop_loop_after(t):
|
|
||||||
- yield from asyncio.sleep(t)
|
|
||||||
+ async def stop_loop_after(t):
|
|
||||||
+ await asyncio.sleep(t)
|
|
||||||
context_loop.stop()
|
|
||||||
|
|
||||||
retrieved_value = False
|
|
||||||
|
|
||||||
- @asyncio.coroutine
|
|
||||||
- def set_value_after(t):
|
|
||||||
+ async def set_value_after(t):
|
|
||||||
nonlocal retrieved_value
|
|
||||||
- yield from asyncio.sleep(t)
|
|
||||||
+ await asyncio.sleep(t)
|
|
||||||
retrieved_value = True
|
|
||||||
|
|
||||||
@autoasync(forever=True)
|
|
||||||
- @asyncio.coroutine
|
|
||||||
- def async_main():
|
|
||||||
- asyncio.async(set_value_after(0.1))
|
|
||||||
- asyncio.async(stop_loop_after(0.2))
|
|
||||||
- yield
|
|
||||||
+ async def async_main():
|
|
||||||
+ asyncio.create_task(set_value_after(0.1))
|
|
||||||
+ asyncio.create_task(stop_loop_after(0.2))
|
|
||||||
+ await YieldOnce()
|
|
||||||
|
|
||||||
async_main()
|
|
||||||
assert retrieved_value
|
|
||||||
|
|
||||||
|
|
||||||
def test_run_forever_func(context_loop):
|
|
||||||
- @asyncio.coroutine
|
|
||||||
- def stop_loop_after(t):
|
|
||||||
- yield from asyncio.sleep(t)
|
|
||||||
+ async def stop_loop_after(t):
|
|
||||||
+ await asyncio.sleep(t)
|
|
||||||
context_loop.stop()
|
|
||||||
|
|
||||||
retrieved_value = False
|
|
||||||
|
|
||||||
- @asyncio.coroutine
|
|
||||||
- def set_value_after(t):
|
|
||||||
+ async def set_value_after(t):
|
|
||||||
nonlocal retrieved_value
|
|
||||||
- yield from asyncio.sleep(t)
|
|
||||||
+ await asyncio.sleep(t)
|
|
||||||
retrieved_value = True
|
|
||||||
|
|
||||||
@autoasync(forever=True)
|
|
||||||
def main_func():
|
|
||||||
- asyncio.async(set_value_after(0.1))
|
|
||||||
- asyncio.async(stop_loop_after(0.2))
|
|
||||||
+ asyncio.create_task(set_value_after(0.1))
|
|
||||||
+ asyncio.create_task(stop_loop_after(0.2))
|
|
||||||
|
|
||||||
main_func()
|
|
||||||
assert retrieved_value
|
|
||||||
@@ -212,9 +204,8 @@ def test_defered_loop(context_loop, new_loop):
|
|
||||||
called.
|
|
||||||
'''
|
|
||||||
@autoasync(pass_loop=True)
|
|
||||||
- @asyncio.coroutine
|
|
||||||
- def async_main(loop):
|
|
||||||
- yield
|
|
||||||
+ async def async_main(loop):
|
|
||||||
+ await YieldOnce()
|
|
||||||
return loop
|
|
||||||
|
|
||||||
with temporary_context_loop(new_loop):
|
|
||||||
diff --git a/test/test_autocommand.py b/test/test_autocommand.py
|
|
||||||
index 6531146..791e1cc 100644
|
|
||||||
--- a/test/test_autocommand.py
|
|
||||||
+++ b/test/test_autocommand.py
|
|
||||||
@@ -41,7 +41,7 @@ def _asyncio_unavailable():
|
|
||||||
reason="async tests require asyncio (python3.4+)")
|
|
||||||
|
|
||||||
|
|
||||||
-@pytest.yield_fixture
|
|
||||||
+@pytest.fixture
|
|
||||||
def patched_autoparse():
|
|
||||||
with patch.object(
|
|
||||||
autocommand_module,
|
|
||||||
@@ -50,7 +50,7 @@ def patched_autoparse():
|
|
||||||
yield autoparse
|
|
||||||
|
|
||||||
|
|
||||||
-@pytest.yield_fixture
|
|
||||||
+@pytest.fixture
|
|
||||||
def patched_autoasync():
|
|
||||||
with patch.object(
|
|
||||||
autocommand_module,
|
|
||||||
@@ -62,7 +62,7 @@ def patched_autoasync():
|
|
||||||
yield autoasync
|
|
||||||
|
|
||||||
|
|
||||||
-@pytest.yield_fixture
|
|
||||||
+@pytest.fixture
|
|
||||||
def patched_automain():
|
|
||||||
with patch.object(
|
|
||||||
autocommand_module,
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Template file for 'python3-autocommand'
|
# Template file for 'python3-autocommand'
|
||||||
pkgname=python3-autocommand
|
pkgname=python3-autocommand
|
||||||
version=2.2.1
|
version=2.2.2
|
||||||
revision=2
|
revision=1
|
||||||
build_style=python3-module
|
build_style=python3-module
|
||||||
hostmakedepends="python3-setuptools"
|
hostmakedepends="python3-setuptools"
|
||||||
depends="python3"
|
depends="python3"
|
||||||
|
@ -11,4 +11,4 @@ maintainer="icp <pangolin@vivaldi.net>"
|
||||||
license="LGPL-3.0-only"
|
license="LGPL-3.0-only"
|
||||||
homepage="https://github.com/Lucretiel/autocommand"
|
homepage="https://github.com/Lucretiel/autocommand"
|
||||||
distfiles="${PYPI_SITE}/a/autocommand/autocommand-${version}.tar.gz"
|
distfiles="${PYPI_SITE}/a/autocommand/autocommand-${version}.tar.gz"
|
||||||
checksum=fed420e9d02745821a782971b583c6970259ee0b229be2a0a401e1467a4f170f
|
checksum=878de9423c5596491167225c2a455043c3130fb5b7286ac83443d45e74955f34
|
||||||
|
|
Loading…
Add table
Reference in a new issue