217 lines
7.3 KiB
Diff
217 lines
7.3 KiB
Diff
From cafb5394bcca2772383437c6adfe1cbf40fbcca0 Mon Sep 17 00:00:00 2001
|
|
From: da-woods <dw-git@d-woods.co.uk>
|
|
Date: Sat, 31 Dec 2022 11:24:01 +0000
|
|
Subject: [PATCH 1/2] Avoid using asyncio.get_event_loop
|
|
|
|
The behaviour of creating a new event loop if one doesn't
|
|
already exist was removed in Python 3.12 alpha and was allegedly
|
|
deprecated before then.
|
|
|
|
Fixes #5183
|
|
---
|
|
tests/run/asyncio_generators.srctree | 37 ++++++++++++++----------
|
|
tests/run/py35_asyncio_async_def.srctree | 2 +-
|
|
2 files changed, 22 insertions(+), 17 deletions(-)
|
|
|
|
diff --git a/tests/run/asyncio_generators.srctree b/tests/run/asyncio_generators.srctree
|
|
index d49b777f41..da8c39fa7d 100644
|
|
--- a/tests/run/asyncio_generators.srctree
|
|
+++ b/tests/run/asyncio_generators.srctree
|
|
@@ -24,11 +24,12 @@ setup(
|
|
|
|
import from_asyncio_import
|
|
import asyncio
|
|
+from contextlib import closing
|
|
|
|
def runloop(task):
|
|
- loop = asyncio.get_event_loop()
|
|
- result = loop.run_until_complete(task())
|
|
- assert 3 == result, result
|
|
+ with closing(asyncio.new_event_loop()) as loop:
|
|
+ result = loop.run_until_complete(task())
|
|
+ assert 3 == result, result
|
|
|
|
import sys
|
|
if sys.version_info < (3, 7):
|
|
@@ -39,11 +40,12 @@ if sys.version_info < (3, 7):
|
|
|
|
import import_asyncio
|
|
import asyncio
|
|
+from contextlib import closing
|
|
|
|
def runloop(task):
|
|
- loop = asyncio.get_event_loop()
|
|
- result = loop.run_until_complete(task())
|
|
- assert 3 == result, result
|
|
+ with closing(asyncio.new_event_loop()) as loop:
|
|
+ result = loop.run_until_complete(task())
|
|
+ assert 3 == result, result
|
|
|
|
import sys
|
|
if sys.version_info < (3, 7):
|
|
@@ -59,11 +61,12 @@ ASYNCIO_SUPPORTS_COROUTINE = sys.version_info[:2] >= (3, 5)
|
|
if ASYNCIO_SUPPORTS_COROUTINE:
|
|
import async_def
|
|
import asyncio
|
|
+ from contextlib import closing
|
|
|
|
def runloop(task):
|
|
- loop = asyncio.get_event_loop()
|
|
- result = loop.run_until_complete(task())
|
|
- assert 3 == result, result
|
|
+ with closing(asyncio.new_event_loop()) as loop:
|
|
+ result = loop.run_until_complete(task())
|
|
+ assert 3 == result, result
|
|
|
|
runloop(async_def.wait3)
|
|
|
|
@@ -77,12 +80,13 @@ ASYNCIO_SUPPORTS_COROUTINE = sys.version_info[:2] >= (3, 5)
|
|
if ASYNCIO_SUPPORTS_COROUTINE:
|
|
from async_def_future import await_future
|
|
import asyncio
|
|
+ from contextlib import closing
|
|
|
|
def runloop():
|
|
- loop = asyncio.get_event_loop()
|
|
- task, events, expected = await_future(loop)
|
|
- result = loop.run_until_complete(task())
|
|
- assert events == expected, 'expected %s, got %s' % (expected, events)
|
|
+ with closing(asyncio.new_event_loop()) as loop:
|
|
+ task, events, expected = await_future(loop)
|
|
+ result = loop.run_until_complete(task())
|
|
+ assert events == expected, 'expected %s, got %s' % (expected, events)
|
|
|
|
runloop()
|
|
|
|
@@ -91,14 +95,15 @@ if ASYNCIO_SUPPORTS_COROUTINE:
|
|
|
|
import sys
|
|
import asyncio
|
|
+from contextlib import closing
|
|
|
|
ASYNCIO_SUPPORTS_COROUTINE = sys.version_info[:2] >= (3, 5)
|
|
ASYNCIO_SUPPORTS_YIELD_FROM = sys.version_info[:2] < (3, 7)
|
|
|
|
def runloop(task):
|
|
- loop = asyncio.get_event_loop()
|
|
- result = loop.run_until_complete(task())
|
|
- assert 3 == result, result
|
|
+ with closing(asyncio.new_event_loop()) as loop:
|
|
+ result = loop.run_until_complete(task())
|
|
+ assert 3 == result, result
|
|
|
|
import import_asyncio
|
|
if ASYNCIO_SUPPORTS_YIELD_FROM:
|
|
diff --git a/tests/run/py35_asyncio_async_def.srctree b/tests/run/py35_asyncio_async_def.srctree
|
|
index 9da5560b30..457ef9dae6 100644
|
|
--- a/tests/run/py35_asyncio_async_def.srctree
|
|
+++ b/tests/run/py35_asyncio_async_def.srctree
|
|
@@ -24,7 +24,7 @@ from contextlib import closing
|
|
async def main():
|
|
await cy_test.say()
|
|
|
|
-with closing(asyncio.get_event_loop()) as loop:
|
|
+with closing(asyncio.new_event_loop()) as loop:
|
|
print("Running Python coroutine ...")
|
|
loop.run_until_complete(main())
|
|
|
|
|
|
From 8afcb52df651b26f3f95ab0ad5330d396e3c402f Mon Sep 17 00:00:00 2001
|
|
From: da-woods <dw-git@d-woods.co.uk>
|
|
Date: Sun, 1 Jan 2023 09:51:34 +0000
|
|
Subject: [PATCH 2/2] Fix on Py 3.4
|
|
|
|
---
|
|
tests/run/asyncio_generators.srctree | 27 ++++++++++++++++++---------
|
|
1 file changed, 18 insertions(+), 9 deletions(-)
|
|
|
|
diff --git a/tests/run/asyncio_generators.srctree b/tests/run/asyncio_generators.srctree
|
|
index da8c39fa7d..2a01a065bc 100644
|
|
--- a/tests/run/asyncio_generators.srctree
|
|
+++ b/tests/run/asyncio_generators.srctree
|
|
@@ -24,14 +24,15 @@ setup(
|
|
|
|
import from_asyncio_import
|
|
import asyncio
|
|
+import sys
|
|
from contextlib import closing
|
|
+new_event_loop = asyncio.new_event_loop if sys.version_info >= (3, 5) else asyncio.get_event_loop
|
|
|
|
def runloop(task):
|
|
- with closing(asyncio.new_event_loop()) as loop:
|
|
+ with closing(new_event_loop()) as loop:
|
|
result = loop.run_until_complete(task())
|
|
assert 3 == result, result
|
|
|
|
-import sys
|
|
if sys.version_info < (3, 7):
|
|
runloop(from_asyncio_import.wait3)
|
|
|
|
@@ -40,14 +41,15 @@ if sys.version_info < (3, 7):
|
|
|
|
import import_asyncio
|
|
import asyncio
|
|
+import sys
|
|
from contextlib import closing
|
|
+new_event_loop = asyncio.new_event_loop if sys.version_info >= (3, 5) else asyncio.get_event_loop
|
|
|
|
def runloop(task):
|
|
- with closing(asyncio.new_event_loop()) as loop:
|
|
+ with closing(new_event_loop()) as loop:
|
|
result = loop.run_until_complete(task())
|
|
assert 3 == result, result
|
|
|
|
-import sys
|
|
if sys.version_info < (3, 7):
|
|
runloop(import_asyncio.wait3)
|
|
|
|
@@ -95,13 +97,20 @@ if ASYNCIO_SUPPORTS_COROUTINE:
|
|
|
|
import sys
|
|
import asyncio
|
|
-from contextlib import closing
|
|
+from contextlib import closing, contextmanager
|
|
+new_event_loop = asyncio.new_event_loop if sys.version_info >= (3, 5) else asyncio.get_event_loop
|
|
+if sys.version_info < (3, 5):
|
|
+ # don't close loop on Py 3.4
|
|
+ @contextmanager
|
|
+ def closing(o):
|
|
+ yield o
|
|
+
|
|
|
|
ASYNCIO_SUPPORTS_COROUTINE = sys.version_info[:2] >= (3, 5)
|
|
ASYNCIO_SUPPORTS_YIELD_FROM = sys.version_info[:2] < (3, 7)
|
|
|
|
def runloop(task):
|
|
- with closing(asyncio.new_event_loop()) as loop:
|
|
+ with closing(new_event_loop()) as loop:
|
|
result = loop.run_until_complete(task())
|
|
assert 3 == result, result
|
|
|
|
@@ -135,7 +144,7 @@ except ImportError:
|
|
try:
|
|
from collections import Generator
|
|
except ImportError:
|
|
- assert sys.version_info < (3,5), "Python 3.5+ should have collections.abc.Generator"
|
|
+ assert sys.version_info < (3, 5), "Python 3.5+ should have collections.abc.Generator"
|
|
Generator = object # easy win :)
|
|
|
|
assert isinstance(from_asyncio_import.wait3(), Generator)
|
|
@@ -148,7 +157,7 @@ except ImportError:
|
|
try:
|
|
from collections import Awaitable
|
|
except ImportError:
|
|
- assert sys.version_info < (3,5), "Python 3.5+ should have collections.abc.Awaitable"
|
|
+ assert sys.version_info < (3, 5), "Python 3.5+ should have collections.abc.Awaitable"
|
|
Awaitable = object # easy win :)
|
|
|
|
assert isinstance(async_def.wait3(), Awaitable)
|
|
@@ -159,7 +168,7 @@ except ImportError:
|
|
try:
|
|
from collections import Coroutine
|
|
except ImportError:
|
|
- assert sys.version_info < (3,5), "Python 3.5+ should have collections.abc.Coroutine"
|
|
+ assert sys.version_info < (3, 5), "Python 3.5+ should have collections.abc.Coroutine"
|
|
Coroutine = object # easy win :)
|
|
|
|
assert isinstance(async_def.wait3(), Coroutine)
|