mirror of
https://github.com/python/cpython.git
synced 2025-10-17 20:28:43 +00:00
bpo-34728: Remove deprecate *loop* argument in asyncio.sleep (GH-9415)
* Insert the warn in the asyncio.sleep when the loop argument is used * Insert the warn in the asyncio.wait and asyncio.wait_for when the loop argument is used * Better format of the code * Add news file * change calls for get_event_loop() to calls for get_running_loop() * Change message to be more clear in News * Improve the comments in test_tasks
This commit is contained in:
parent
a0fd7f1b55
commit
558c49bcf3
3 changed files with 47 additions and 3 deletions
|
@ -382,7 +382,11 @@ async def wait(fs, *, loop=None, timeout=None, return_when=ALL_COMPLETED):
|
||||||
raise ValueError(f'Invalid return_when value: {return_when}')
|
raise ValueError(f'Invalid return_when value: {return_when}')
|
||||||
|
|
||||||
if loop is None:
|
if loop is None:
|
||||||
loop = events.get_event_loop()
|
loop = events.get_running_loop()
|
||||||
|
else:
|
||||||
|
warnings.warn("The loop argument is deprecated and scheduled for"
|
||||||
|
"removal in Python 4.0.",
|
||||||
|
DeprecationWarning, stacklevel=2)
|
||||||
|
|
||||||
fs = {ensure_future(f, loop=loop) for f in set(fs)}
|
fs = {ensure_future(f, loop=loop) for f in set(fs)}
|
||||||
|
|
||||||
|
@ -408,7 +412,11 @@ async def wait_for(fut, timeout, *, loop=None):
|
||||||
This function is a coroutine.
|
This function is a coroutine.
|
||||||
"""
|
"""
|
||||||
if loop is None:
|
if loop is None:
|
||||||
loop = events.get_event_loop()
|
loop = events.get_running_loop()
|
||||||
|
else:
|
||||||
|
warnings.warn("The loop argument is deprecated and scheduled for"
|
||||||
|
"removal in Python 4.0.",
|
||||||
|
DeprecationWarning, stacklevel=2)
|
||||||
|
|
||||||
if timeout is None:
|
if timeout is None:
|
||||||
return await fut
|
return await fut
|
||||||
|
@ -585,7 +593,12 @@ async def sleep(delay, result=None, *, loop=None):
|
||||||
return result
|
return result
|
||||||
|
|
||||||
if loop is None:
|
if loop is None:
|
||||||
loop = events.get_event_loop()
|
loop = events.get_running_loop()
|
||||||
|
else:
|
||||||
|
warnings.warn("The loop argument is deprecated and scheduled for"
|
||||||
|
"removal in Python 4.0.",
|
||||||
|
DeprecationWarning, stacklevel=2)
|
||||||
|
|
||||||
future = loop.create_future()
|
future = loop.create_future()
|
||||||
h = loop.call_later(delay,
|
h = loop.call_later(delay,
|
||||||
futures._set_result_unless_cancelled,
|
futures._set_result_unless_cancelled,
|
||||||
|
|
|
@ -3220,6 +3220,35 @@ class SleepTests(test_utils.TestCase):
|
||||||
self.loop.run_until_complete(coro())
|
self.loop.run_until_complete(coro())
|
||||||
self.assertEqual(result, 11)
|
self.assertEqual(result, 11)
|
||||||
|
|
||||||
|
def test_loop_argument_is_deprecated(self):
|
||||||
|
# Remove test when loop argument is removed in Python 4.0
|
||||||
|
with self.assertWarns(DeprecationWarning):
|
||||||
|
self.loop.run_until_complete(asyncio.sleep(0.01, loop=self.loop))
|
||||||
|
|
||||||
|
|
||||||
|
class WaitTests(test_utils.TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
super().setUp()
|
||||||
|
self.loop = asyncio.new_event_loop()
|
||||||
|
asyncio.set_event_loop(None)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.loop.close()
|
||||||
|
self.loop = None
|
||||||
|
super().tearDown()
|
||||||
|
|
||||||
|
def test_loop_argument_is_deprecated_in_wait(self):
|
||||||
|
# Remove test when loop argument is removed in Python 4.0
|
||||||
|
with self.assertWarns(DeprecationWarning):
|
||||||
|
self.loop.run_until_complete(
|
||||||
|
asyncio.wait([coroutine_function()], loop=self.loop))
|
||||||
|
|
||||||
|
def test_loop_argument_is_deprecated_in_wait_for(self):
|
||||||
|
# Remove test when loop argument is removed in Python 4.0
|
||||||
|
with self.assertWarns(DeprecationWarning):
|
||||||
|
self.loop.run_until_complete(
|
||||||
|
asyncio.wait_for(coroutine_function(), 0.01, loop=self.loop))
|
||||||
|
|
||||||
|
|
||||||
class CompatibilityTests(test_utils.TestCase):
|
class CompatibilityTests(test_utils.TestCase):
|
||||||
# Tests for checking a bridge between old-styled coroutines
|
# Tests for checking a bridge between old-styled coroutines
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Add deprecation warning when `loop` is used in methods: `asyncio.sleep`,
|
||||||
|
`asyncio.wait` and `asyncio.wait_for`.
|
Loading…
Add table
Add a link
Reference in a new issue