]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-34728: Remove deprecate *loop* argument in asyncio.sleep (GH-9415)
authorJoão Júnior <joaojunior.ma@gmail.com>
Mon, 24 Sep 2018 09:51:22 +0000 (06:51 -0300)
committerCarol Willing <carolcode@willingconsulting.com>
Mon, 24 Sep 2018 09:51:22 +0000 (05:51 -0400)
* 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

Lib/asyncio/tasks.py
Lib/test/test_asyncio/test_tasks.py
Misc/NEWS.d/next/Library/2018-09-20-16-55-43.bpo-34728.CUE8LU.rst [new file with mode: 0644]

index 7121aa65da0e300a5a84a8280c3a681032a5e94f..b52aad8c422df4e5b2f6493c23eceba43fbd870b 100644 (file)
@@ -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}')
 
     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)}
 
@@ -408,7 +412,11 @@ async def wait_for(fut, timeout, *, loop=None):
     This function is a coroutine.
     """
     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:
         return await fut
@@ -585,7 +593,12 @@ async def sleep(delay, result=None, *, loop=None):
         return result
 
     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()
     h = loop.call_later(delay,
                         futures._set_result_unless_cancelled,
index 40d1953532bc5ba595da337db2b29a655ab00db5..ea54706edc8e3e4951d2576e36d15bb7718bab2a 100644 (file)
@@ -3220,6 +3220,35 @@ class SleepTests(test_utils.TestCase):
         self.loop.run_until_complete(coro())
         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):
     # Tests for checking a bridge between old-styled coroutines
diff --git a/Misc/NEWS.d/next/Library/2018-09-20-16-55-43.bpo-34728.CUE8LU.rst b/Misc/NEWS.d/next/Library/2018-09-20-16-55-43.bpo-34728.CUE8LU.rst
new file mode 100644 (file)
index 0000000..e06eb0f
--- /dev/null
@@ -0,0 +1,2 @@
+Add deprecation warning when `loop` is used in methods: `asyncio.sleep`,
+`asyncio.wait` and `asyncio.wait_for`.