bpo-34790: Remove passing coroutine objects to asyncio.wait() by asvetlov · Pull Request #31964 · python/cpython
async def coro(s): return s c = coro('test') c = self.loop.create_task(coro('test')) task = self.new_task( self.loop, asyncio.wait([c, c, coro('spam')])) asyncio.wait([c, c, self.loop.create_task(coro('spam'))]))
with self.assertWarns(DeprecationWarning): done, pending = self.loop.run_until_complete(task) done, pending = self.loop.run_until_complete(task)
self.assertFalse(pending) self.assertEqual(set(f.result() for f in done), {'test', 'spam'})
loop = self.new_test_loop(gen)
loop.run_until_complete(test())
def test_as_completed_coroutine_use_global_loop(self): # Deprecated in 3.10 async def coro(): return 42
loop = self.new_test_loop() asyncio.set_event_loop(loop) self.addCleanup(asyncio.set_event_loop, None) futs = asyncio.as_completed([coro()]) with self.assertWarns(DeprecationWarning) as cm: futs = list(futs) self.assertEqual(cm.warnings[0].filename, __file__) self.assertEqual(len(futs), 1) self.assertEqual(loop.run_until_complete(futs[0]), 42)
def test_sleep(self):
def gen():
f = asyncio.ensure_future(outer(), loop=self.loop)
class WaitTests(test_utils.TestCase): def setUp(self): super().setUp() self.loop = asyncio.new_event_loop() self.set_event_loop(self.loop)
def tearDown(self): self.loop.close() self.loop = None super().tearDown()
def test_coro_is_deprecated_in_wait(self): # Remove test when passing coros to asyncio.wait() is removed in 3.11 with self.assertWarns(DeprecationWarning): self.loop.run_until_complete( asyncio.wait([coroutine_function()]))
task = self.loop.create_task(coroutine_function()) with self.assertWarns(DeprecationWarning): self.loop.run_until_complete( asyncio.wait([task, coroutine_function()]))
class CompatibilityTests(test_utils.TestCase): # Tests for checking a bridge between old-styled coroutines # and async/await syntax