summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorda-woods <dw-git@d-woods.co.uk>2023-01-04 09:57:00 +0000
committerGitHub <noreply@github.com>2023-01-04 10:57:00 +0100
commit60fe73184a855b5a0bcd3a1cf6c2b3993e2bafee (patch)
tree7e8995a58bffd93668910a7ffa2f6e9b9bb342ef
parentc99616ac78fba3eae59647d2ead79d20cedb7603 (diff)
downloadcython-60fe73184a855b5a0bcd3a1cf6c2b3993e2bafee.tar.gz
[0.29.x] Avoid using asyncio.get_event_loop (GH-5188)
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 https://github.com/cython/cython/issues/5183
-rw-r--r--tests/run/asyncio_generators.srctree56
-rw-r--r--tests/run/py35_asyncio_async_def.srctree2
2 files changed, 36 insertions, 22 deletions
diff --git a/tests/run/asyncio_generators.srctree b/tests/run/asyncio_generators.srctree
index d49b777f4..2a01a065b 100644
--- a/tests/run/asyncio_generators.srctree
+++ b/tests/run/asyncio_generators.srctree
@@ -24,13 +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):
- loop = asyncio.get_event_loop()
- result = loop.run_until_complete(task())
- assert 3 == result, result
+ 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)
@@ -39,13 +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):
- loop = asyncio.get_event_loop()
- result = loop.run_until_complete(task())
- assert 3 == result, result
+ 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)
@@ -59,11 +63,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 +82,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 +97,22 @@ if ASYNCIO_SUPPORTS_COROUTINE:
import sys
import asyncio
+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):
- loop = asyncio.get_event_loop()
- result = loop.run_until_complete(task())
- assert 3 == result, result
+ with closing(new_event_loop()) as loop:
+ result = loop.run_until_complete(task())
+ assert 3 == result, result
import import_asyncio
if ASYNCIO_SUPPORTS_YIELD_FROM:
@@ -130,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)
@@ -143,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)
@@ -154,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)
diff --git a/tests/run/py35_asyncio_async_def.srctree b/tests/run/py35_asyncio_async_def.srctree
index 9da5560b3..457ef9dae 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())