[Python-checkins] [3.9] bpo-44815: Always show deprecation in asyncio.gather/sleep() (GH-27569)
ambv
webhook-mailer at python.org
Wed Aug 18 14:48:11 EDT 2021
https://github.com/python/cpython/commit/b2779b2aa16acb3fd1297ccfe2fe5aaa007f74ae
commit: b2779b2aa16acb3fd1297ccfe2fe5aaa007f74ae
branch: 3.9
author: Sam Bull <aa6bs0 at sambull.org>
committer: ambv <lukasz at langa.pl>
date: 2021-08-18T20:47:55+02:00
summary:
[3.9] bpo-44815: Always show deprecation in asyncio.gather/sleep() (GH-27569)
Co-authored-by: Łukasz Langa <lukasz at langa.pl>
files:
A Misc/NEWS.d/next/Library/2021-08-03-15-02-28.bpo-44815.9AmFfy.rst
M Lib/asyncio/tasks.py
M Lib/test/test_asyncio/__init__.py
diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py
index d6262ae75e6569..d7e0575ebd7fbb 100644
--- a/Lib/asyncio/tasks.py
+++ b/Lib/asyncio/tasks.py
@@ -635,16 +635,17 @@ def __sleep0():
async def sleep(delay, result=None, *, loop=None):
"""Coroutine that completes after a given time (in seconds)."""
+ if loop is not None:
+ warnings.warn("The loop argument is deprecated since Python 3.8, "
+ "and scheduled for removal in Python 3.10.",
+ DeprecationWarning, stacklevel=2)
+
if delay <= 0:
await __sleep0()
return result
if loop is None:
loop = events.get_running_loop()
- else:
- warnings.warn("The loop argument is deprecated since Python 3.8, "
- "and scheduled for removal in Python 3.10.",
- DeprecationWarning, stacklevel=2)
future = loop.create_future()
h = loop.call_later(delay,
@@ -750,13 +751,14 @@ def gather(*coros_or_futures, loop=None, return_exceptions=False):
after catching an exception (raised by one of the awaitables) from
gather won't cancel any other awaitables.
"""
+ if loop is not None:
+ warnings.warn("The loop argument is deprecated since Python 3.8, "
+ "and scheduled for removal in Python 3.10.",
+ DeprecationWarning, stacklevel=2)
+
if not coros_or_futures:
if loop is None:
loop = events.get_event_loop()
- else:
- warnings.warn("The loop argument is deprecated since Python 3.8, "
- "and scheduled for removal in Python 3.10.",
- DeprecationWarning, stacklevel=2)
outer = loop.create_future()
outer.set_result([])
return outer
diff --git a/Lib/test/test_asyncio/__init__.py b/Lib/test/test_asyncio/__init__.py
index c77c7a81278be7..230c35cfcf12cf 100644
--- a/Lib/test/test_asyncio/__init__.py
+++ b/Lib/test/test_asyncio/__init__.py
@@ -1,8 +1,37 @@
import os
-from test.support import load_package_tests, import_module
+from test import support
+import unittest
# Skip tests if we don't have concurrent.futures.
-import_module('concurrent.futures')
+support.import_module('concurrent.futures')
-def load_tests(*args):
- return load_package_tests(os.path.dirname(__file__), *args)
+
+def load_tests(loader, _, pattern):
+ pkg_dir = os.path.dirname(__file__)
+ suite = AsyncioTestSuite()
+ return support.load_package_tests(pkg_dir, loader, suite, pattern)
+
+
+class AsyncioTestSuite(unittest.TestSuite):
+ """A custom test suite that also runs setup/teardown for the whole package.
+
+ Normally unittest only runs setUpModule() and tearDownModule() within each
+ test module part of the test suite. Copying those functions to each file
+ would be tedious, let's run this once and for all.
+ """
+ def run(self, result, debug=False):
+ ignore = support.ignore_deprecations_from
+ tokens = {
+ ignore("asyncio.base_events", like=r".*loop argument.*"),
+ ignore("asyncio.unix_events", like=r".*loop argument.*"),
+ ignore("asyncio.futures", like=r".*loop argument.*"),
+ ignore("asyncio.runners", like=r".*loop argument.*"),
+ ignore("asyncio.subprocess", like=r".*loop argument.*"),
+ ignore("asyncio.tasks", like=r".*loop argument.*"),
+ ignore("test.test_asyncio.test_queues", like=r".*loop argument.*"),
+ ignore("test.test_asyncio.test_tasks", like=r".*loop argument.*"),
+ }
+ try:
+ super().run(result, debug=debug)
+ finally:
+ support.clear_ignored_deprecations(*tokens)
diff --git a/Misc/NEWS.d/next/Library/2021-08-03-15-02-28.bpo-44815.9AmFfy.rst b/Misc/NEWS.d/next/Library/2021-08-03-15-02-28.bpo-44815.9AmFfy.rst
new file mode 100644
index 00000000000000..63dfbf3cd37946
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2021-08-03-15-02-28.bpo-44815.9AmFfy.rst
@@ -0,0 +1,2 @@
+Always show ``loop=`` arg deprecations in :func:`asyncio.gather` and
+:func:`asyncio.sleep`
More information about the Python-checkins
mailing list