]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-127949: deprecate `asyncio.get_event_loop_policy` (#128053)
authorKumar Aditya <kumaraditya@python.org>
Wed, 18 Dec 2024 12:34:20 +0000 (18:04 +0530)
committerGitHub <noreply@github.com>
Wed, 18 Dec 2024 12:34:20 +0000 (18:04 +0530)
This deprecates `asyncio.get_event_loop_policy` and will be removed in Python 3.16.

Doc/library/asyncio-policy.rst
Lib/asyncio/events.py
Lib/test/test_asyncio/test_events.py
Lib/test/test_asyncio/test_runners.py
Lib/test/test_asyncio/test_subprocess.py
Lib/test/test_asyncio/test_windows_events.py
Lib/test/test_contextlib_async.py
Lib/test/test_unittest/test_async_case.py
Modules/_asynciomodule.c

index e8e470c1b343fd38c826f4aa5a2fd2cf4620f2c2..2d05c3a9f7f15704d5cf3b9fbbaf0a0483bef238 100644 (file)
@@ -40,6 +40,10 @@ for the current process:
 
    Return the current process-wide policy.
 
+   .. deprecated:: next
+      The :func:`get_event_loop_policy` function is deprecated and
+      will be removed in Python 3.16.
+
 .. function:: set_event_loop_policy(policy)
 
    Set the current process-wide policy to *policy*.
index 0926cfe232347899761ab3b61b9e943cb1592e94..1449245edc7c7e0959e1e41ff20a5f8b4eb16cfc 100644 (file)
@@ -8,6 +8,7 @@ __all__ = (
     'AbstractEventLoopPolicy',
     'AbstractEventLoop', 'AbstractServer',
     'Handle', 'TimerHandle',
+    '_get_event_loop_policy',
     'get_event_loop_policy',
     '_set_event_loop_policy',
     'set_event_loop_policy',
@@ -761,12 +762,15 @@ def _init_event_loop_policy():
             _event_loop_policy = DefaultEventLoopPolicy()
 
 
-def get_event_loop_policy():
+def _get_event_loop_policy():
     """Get the current event loop policy."""
     if _event_loop_policy is None:
         _init_event_loop_policy()
     return _event_loop_policy
 
+def get_event_loop_policy():
+    warnings._deprecated('asyncio.get_event_loop_policy', remove=(3, 16))
+    return _get_event_loop_policy()
 
 def _set_event_loop_policy(policy):
     """Set the current event loop policy.
@@ -778,7 +782,7 @@ def _set_event_loop_policy(policy):
     _event_loop_policy = policy
 
 def set_event_loop_policy(policy):
-    warnings._deprecated('set_event_loop_policy', remove=(3,16))
+    warnings._deprecated('asyncio.set_event_loop_policy', remove=(3,16))
     _set_event_loop_policy(policy)
 
 def get_event_loop():
@@ -794,17 +798,17 @@ def get_event_loop():
     current_loop = _get_running_loop()
     if current_loop is not None:
         return current_loop
-    return get_event_loop_policy().get_event_loop()
+    return _get_event_loop_policy().get_event_loop()
 
 
 def set_event_loop(loop):
     """Equivalent to calling get_event_loop_policy().set_event_loop(loop)."""
-    get_event_loop_policy().set_event_loop(loop)
+    _get_event_loop_policy().set_event_loop(loop)
 
 
 def new_event_loop():
     """Equivalent to calling get_event_loop_policy().new_event_loop()."""
-    return get_event_loop_policy().new_event_loop()
+    return _get_event_loop_policy().new_event_loop()
 
 
 # Alias pure-Python implementations for testing purposes.
index 50df1b6ff9e09faf1a684c8699734c8e088d6e80..d43f66c13d2f96fcf06afdc54faa10ef5e4a946d 100644 (file)
@@ -2397,7 +2397,7 @@ class HandleTests(test_utils.TestCase):
         self.assertRegex(repr(h), regex)
 
     def test_handle_source_traceback(self):
-        loop = asyncio.get_event_loop_policy().new_event_loop()
+        loop = asyncio.new_event_loop()
         loop.set_debug(True)
         self.set_event_loop(loop)
 
@@ -2759,24 +2759,31 @@ class PolicyTests(unittest.TestCase):
         old_loop.close()
 
     def test_get_event_loop_policy(self):
-        policy = asyncio.get_event_loop_policy()
-        self.assertIsInstance(policy, asyncio.AbstractEventLoopPolicy)
-        self.assertIs(policy, asyncio.get_event_loop_policy())
+        with self.assertWarnsRegex(
+                DeprecationWarning, "'asyncio.get_event_loop_policy' is deprecated"):
+            policy = asyncio.get_event_loop_policy()
+            self.assertIsInstance(policy, asyncio.AbstractEventLoopPolicy)
+            self.assertIs(policy, asyncio.get_event_loop_policy())
 
     def test_set_event_loop_policy(self):
         with self.assertWarnsRegex(
-                DeprecationWarning, "'set_event_loop_policy' is deprecated"):
+                DeprecationWarning, "'asyncio.set_event_loop_policy' is deprecated"):
             self.assertRaises(
                 TypeError, asyncio.set_event_loop_policy, object())
 
-        old_policy = asyncio.get_event_loop_policy()
+        with self.assertWarnsRegex(
+                DeprecationWarning, "'asyncio.get_event_loop_policy' is deprecated"):
+            old_policy = asyncio.get_event_loop_policy()
 
         policy = asyncio.DefaultEventLoopPolicy()
         with self.assertWarnsRegex(
-                DeprecationWarning, "'set_event_loop_policy' is deprecated"):
+                DeprecationWarning, "'asyncio.set_event_loop_policy' is deprecated"):
             asyncio.set_event_loop_policy(policy)
-        self.assertIs(policy, asyncio.get_event_loop_policy())
-        self.assertIsNot(policy, old_policy)
+
+        with self.assertWarnsRegex(
+                DeprecationWarning, "'asyncio.get_event_loop_policy' is deprecated"):
+            self.assertIs(policy, asyncio.get_event_loop_policy())
+            self.assertIsNot(policy, old_policy)
 
 
 class GetEventLoopTestsMixin:
@@ -2859,7 +2866,7 @@ class GetEventLoopTestsMixin:
             def get_event_loop(self):
                 raise TestError
 
-        old_policy = asyncio.get_event_loop_policy()
+        old_policy = asyncio._get_event_loop_policy()
         try:
             asyncio._set_event_loop_policy(Policy())
             loop = asyncio.new_event_loop()
@@ -2899,7 +2906,7 @@ class GetEventLoopTestsMixin:
         self.assertIs(asyncio._get_running_loop(), None)
 
     def test_get_event_loop_returns_running_loop2(self):
-        old_policy = asyncio.get_event_loop_policy()
+        old_policy = asyncio._get_event_loop_policy()
         try:
             asyncio._set_event_loop_policy(asyncio.DefaultEventLoopPolicy())
             loop = asyncio.new_event_loop()
index f9afccc937f1de165aa2383abe217815e0cc4c29..e1f82f7f7bec0ca84aa26b571d5f2f111f6a81ba 100644 (file)
@@ -64,7 +64,7 @@ class BaseTest(unittest.TestCase):
         asyncio._set_event_loop_policy(policy)
 
     def tearDown(self):
-        policy = asyncio.get_event_loop_policy()
+        policy = asyncio._get_event_loop_policy()
         if policy.loop is not None:
             self.assertTrue(policy.loop.is_closed())
             self.assertTrue(policy.loop.shutdown_ag_run)
@@ -208,7 +208,7 @@ class RunTests(BaseTest):
             await asyncio.sleep(0)
             return 42
 
-        policy = asyncio.get_event_loop_policy()
+        policy = asyncio._get_event_loop_policy()
         policy.set_event_loop = mock.Mock()
         asyncio.run(main())
         self.assertTrue(policy.set_event_loop.called)
@@ -495,7 +495,7 @@ class RunnerTests(BaseTest):
         async def coro():
             pass
 
-        policy = asyncio.get_event_loop_policy()
+        policy = asyncio._get_event_loop_policy()
         policy.set_event_loop = mock.Mock()
         runner = asyncio.Runner()
         runner.run(coro())
index 467e964b26c8249dae5874011216bd7d77b3b38e..57decaf2d277fb02482bfece7de171ee3d21e89b 100644 (file)
@@ -886,8 +886,7 @@ if sys.platform != 'win32':
 
         def setUp(self):
             super().setUp()
-            policy = asyncio.get_event_loop_policy()
-            self.loop = policy.new_event_loop()
+            self.loop = asyncio.new_event_loop()
             self.set_event_loop(self.loop)
 
         def test_watcher_implementation(self):
index 26ca5f905f752fcf1d06989a2a19c937ca083d84..28b05d24dc25a1e669247eb5f822c790b7582fab 100644 (file)
@@ -332,7 +332,7 @@ class WinPolicyTests(WindowsEventsTestCase):
                 asyncio.get_running_loop(),
                 asyncio.SelectorEventLoop)
 
-        old_policy = asyncio.get_event_loop_policy()
+        old_policy = asyncio._get_event_loop_policy()
         try:
             asyncio._set_event_loop_policy(
                 asyncio.WindowsSelectorEventLoopPolicy())
@@ -346,7 +346,7 @@ class WinPolicyTests(WindowsEventsTestCase):
                 asyncio.get_running_loop(),
                 asyncio.ProactorEventLoop)
 
-        old_policy = asyncio.get_event_loop_policy()
+        old_policy = asyncio._get_event_loop_policy()
         try:
             asyncio._set_event_loop_policy(
                 asyncio.WindowsProactorEventLoopPolicy())
index d8ee5757b12c158d72471b19eaf8870e0a26d84a..88dcdadd5e027de005ed68c3f9464aaf1f42a2c4 100644 (file)
@@ -496,7 +496,7 @@ class TestAsyncExitStack(TestBaseExitStack, unittest.IsolatedAsyncioTestCase):
     class SyncAsyncExitStack(AsyncExitStack):
         @staticmethod
         def run_coroutine(coro):
-            loop = asyncio.get_event_loop_policy().get_event_loop()
+            loop = asyncio.new_event_loop()
             t = loop.create_task(coro)
             t.add_done_callback(lambda f: loop.stop())
             loop.run_forever()
index 664ca5efe57f840ae9e5e56639ee05205daad8c6..993e6bf013cfbf50a5413f2ff40c8bf2d51387e7 100644 (file)
@@ -480,7 +480,7 @@ class TestAsyncCase(unittest.TestCase):
 
         class TestCase1(unittest.IsolatedAsyncioTestCase):
             def setUp(self):
-                asyncio.get_event_loop_policy().get_event_loop()
+                asyncio._get_event_loop_policy().get_event_loop()
 
             async def test_demo1(self):
                 pass
index f883125a2c70b26cb0909467fd1734612a272f47..13dd2fd55fd4541f986879f5b9035aa8ddcbf65a 100644 (file)
@@ -3773,7 +3773,7 @@ module_init(asyncio_state *state)
     }
 
     WITH_MOD("asyncio.events")
-    GET_MOD_ATTR(state->asyncio_get_event_loop_policy, "get_event_loop_policy")
+    GET_MOD_ATTR(state->asyncio_get_event_loop_policy, "_get_event_loop_policy")
 
     WITH_MOD("asyncio.base_futures")
     GET_MOD_ATTR(state->asyncio_future_repr_func, "_future_repr")