Skip to content

Commit 2c9f1e1

Browse files
kumaraditya303srinivasreddy
authored andcommitted
pythongh-127949: deprecate asyncio.get_event_loop_policy (python#128053)
This deprecates `asyncio.get_event_loop_policy` and will be removed in Python 3.16.
1 parent 6171ed1 commit 2c9f1e1

9 files changed

+40
-26
lines changed

Doc/library/asyncio-policy.rst

+4
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ for the current process:
4040

4141
Return the current process-wide policy.
4242

43+
.. deprecated:: next
44+
The :func:`get_event_loop_policy` function is deprecated and
45+
will be removed in Python 3.16.
46+
4347
.. function:: set_event_loop_policy(policy)
4448

4549
Set the current process-wide policy to *policy*.

Lib/asyncio/events.py

+9-5
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
'AbstractEventLoopPolicy',
99
'AbstractEventLoop', 'AbstractServer',
1010
'Handle', 'TimerHandle',
11+
'_get_event_loop_policy',
1112
'get_event_loop_policy',
1213
'_set_event_loop_policy',
1314
'set_event_loop_policy',
@@ -761,12 +762,15 @@ def _init_event_loop_policy():
761762
_event_loop_policy = DefaultEventLoopPolicy()
762763

763764

764-
def get_event_loop_policy():
765+
def _get_event_loop_policy():
765766
"""Get the current event loop policy."""
766767
if _event_loop_policy is None:
767768
_init_event_loop_policy()
768769
return _event_loop_policy
769770

771+
def get_event_loop_policy():
772+
warnings._deprecated('asyncio.get_event_loop_policy', remove=(3, 16))
773+
return _get_event_loop_policy()
770774

771775
def _set_event_loop_policy(policy):
772776
"""Set the current event loop policy.
@@ -778,7 +782,7 @@ def _set_event_loop_policy(policy):
778782
_event_loop_policy = policy
779783

780784
def set_event_loop_policy(policy):
781-
warnings._deprecated('set_event_loop_policy', remove=(3,16))
785+
warnings._deprecated('asyncio.set_event_loop_policy', remove=(3,16))
782786
_set_event_loop_policy(policy)
783787

784788
def get_event_loop():
@@ -794,17 +798,17 @@ def get_event_loop():
794798
current_loop = _get_running_loop()
795799
if current_loop is not None:
796800
return current_loop
797-
return get_event_loop_policy().get_event_loop()
801+
return _get_event_loop_policy().get_event_loop()
798802

799803

800804
def set_event_loop(loop):
801805
"""Equivalent to calling get_event_loop_policy().set_event_loop(loop)."""
802-
get_event_loop_policy().set_event_loop(loop)
806+
_get_event_loop_policy().set_event_loop(loop)
803807

804808

805809
def new_event_loop():
806810
"""Equivalent to calling get_event_loop_policy().new_event_loop()."""
807-
return get_event_loop_policy().new_event_loop()
811+
return _get_event_loop_policy().new_event_loop()
808812

809813

810814
# Alias pure-Python implementations for testing purposes.

Lib/test/test_asyncio/test_events.py

+18-11
Original file line numberDiff line numberDiff line change
@@ -2397,7 +2397,7 @@ def test_handle_repr_debug(self):
23972397
self.assertRegex(repr(h), regex)
23982398

23992399
def test_handle_source_traceback(self):
2400-
loop = asyncio.get_event_loop_policy().new_event_loop()
2400+
loop = asyncio.new_event_loop()
24012401
loop.set_debug(True)
24022402
self.set_event_loop(loop)
24032403

@@ -2759,24 +2759,31 @@ def test_set_event_loop(self):
27592759
old_loop.close()
27602760

27612761
def test_get_event_loop_policy(self):
2762-
policy = asyncio.get_event_loop_policy()
2763-
self.assertIsInstance(policy, asyncio.AbstractEventLoopPolicy)
2764-
self.assertIs(policy, asyncio.get_event_loop_policy())
2762+
with self.assertWarnsRegex(
2763+
DeprecationWarning, "'asyncio.get_event_loop_policy' is deprecated"):
2764+
policy = asyncio.get_event_loop_policy()
2765+
self.assertIsInstance(policy, asyncio.AbstractEventLoopPolicy)
2766+
self.assertIs(policy, asyncio.get_event_loop_policy())
27652767

27662768
def test_set_event_loop_policy(self):
27672769
with self.assertWarnsRegex(
2768-
DeprecationWarning, "'set_event_loop_policy' is deprecated"):
2770+
DeprecationWarning, "'asyncio.set_event_loop_policy' is deprecated"):
27692771
self.assertRaises(
27702772
TypeError, asyncio.set_event_loop_policy, object())
27712773

2772-
old_policy = asyncio.get_event_loop_policy()
2774+
with self.assertWarnsRegex(
2775+
DeprecationWarning, "'asyncio.get_event_loop_policy' is deprecated"):
2776+
old_policy = asyncio.get_event_loop_policy()
27732777

27742778
policy = asyncio.DefaultEventLoopPolicy()
27752779
with self.assertWarnsRegex(
2776-
DeprecationWarning, "'set_event_loop_policy' is deprecated"):
2780+
DeprecationWarning, "'asyncio.set_event_loop_policy' is deprecated"):
27772781
asyncio.set_event_loop_policy(policy)
2778-
self.assertIs(policy, asyncio.get_event_loop_policy())
2779-
self.assertIsNot(policy, old_policy)
2782+
2783+
with self.assertWarnsRegex(
2784+
DeprecationWarning, "'asyncio.get_event_loop_policy' is deprecated"):
2785+
self.assertIs(policy, asyncio.get_event_loop_policy())
2786+
self.assertIsNot(policy, old_policy)
27802787

27812788

27822789
class GetEventLoopTestsMixin:
@@ -2859,7 +2866,7 @@ class Policy(asyncio.DefaultEventLoopPolicy):
28592866
def get_event_loop(self):
28602867
raise TestError
28612868

2862-
old_policy = asyncio.get_event_loop_policy()
2869+
old_policy = asyncio._get_event_loop_policy()
28632870
try:
28642871
asyncio._set_event_loop_policy(Policy())
28652872
loop = asyncio.new_event_loop()
@@ -2899,7 +2906,7 @@ async def func():
28992906
self.assertIs(asyncio._get_running_loop(), None)
29002907

29012908
def test_get_event_loop_returns_running_loop2(self):
2902-
old_policy = asyncio.get_event_loop_policy()
2909+
old_policy = asyncio._get_event_loop_policy()
29032910
try:
29042911
asyncio._set_event_loop_policy(asyncio.DefaultEventLoopPolicy())
29052912
loop = asyncio.new_event_loop()

Lib/test/test_asyncio/test_runners.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ def setUp(self):
6464
asyncio._set_event_loop_policy(policy)
6565

6666
def tearDown(self):
67-
policy = asyncio.get_event_loop_policy()
67+
policy = asyncio._get_event_loop_policy()
6868
if policy.loop is not None:
6969
self.assertTrue(policy.loop.is_closed())
7070
self.assertTrue(policy.loop.shutdown_ag_run)
@@ -208,7 +208,7 @@ async def main():
208208
await asyncio.sleep(0)
209209
return 42
210210

211-
policy = asyncio.get_event_loop_policy()
211+
policy = asyncio._get_event_loop_policy()
212212
policy.set_event_loop = mock.Mock()
213213
asyncio.run(main())
214214
self.assertTrue(policy.set_event_loop.called)
@@ -495,7 +495,7 @@ def test_set_event_loop_called_once(self):
495495
async def coro():
496496
pass
497497

498-
policy = asyncio.get_event_loop_policy()
498+
policy = asyncio._get_event_loop_policy()
499499
policy.set_event_loop = mock.Mock()
500500
runner = asyncio.Runner()
501501
runner.run(coro())

Lib/test/test_asyncio/test_subprocess.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -886,8 +886,7 @@ class SubprocessWatcherMixin(SubprocessMixin):
886886

887887
def setUp(self):
888888
super().setUp()
889-
policy = asyncio.get_event_loop_policy()
890-
self.loop = policy.new_event_loop()
889+
self.loop = asyncio.new_event_loop()
891890
self.set_event_loop(self.loop)
892891

893892
def test_watcher_implementation(self):

Lib/test/test_asyncio/test_windows_events.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ async def main():
332332
asyncio.get_running_loop(),
333333
asyncio.SelectorEventLoop)
334334

335-
old_policy = asyncio.get_event_loop_policy()
335+
old_policy = asyncio._get_event_loop_policy()
336336
try:
337337
asyncio._set_event_loop_policy(
338338
asyncio.WindowsSelectorEventLoopPolicy())
@@ -346,7 +346,7 @@ async def main():
346346
asyncio.get_running_loop(),
347347
asyncio.ProactorEventLoop)
348348

349-
old_policy = asyncio.get_event_loop_policy()
349+
old_policy = asyncio._get_event_loop_policy()
350350
try:
351351
asyncio._set_event_loop_policy(
352352
asyncio.WindowsProactorEventLoopPolicy())

Lib/test/test_contextlib_async.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ class TestAsyncExitStack(TestBaseExitStack, unittest.IsolatedAsyncioTestCase):
496496
class SyncAsyncExitStack(AsyncExitStack):
497497
@staticmethod
498498
def run_coroutine(coro):
499-
loop = asyncio.get_event_loop_policy().get_event_loop()
499+
loop = asyncio.new_event_loop()
500500
t = loop.create_task(coro)
501501
t.add_done_callback(lambda f: loop.stop())
502502
loop.run_forever()

Lib/test/test_unittest/test_async_case.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ def test_setup_get_event_loop(self):
480480

481481
class TestCase1(unittest.IsolatedAsyncioTestCase):
482482
def setUp(self):
483-
asyncio.get_event_loop_policy().get_event_loop()
483+
asyncio._get_event_loop_policy().get_event_loop()
484484

485485
async def test_demo1(self):
486486
pass

Modules/_asynciomodule.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -3773,7 +3773,7 @@ module_init(asyncio_state *state)
37733773
}
37743774

37753775
WITH_MOD("asyncio.events")
3776-
GET_MOD_ATTR(state->asyncio_get_event_loop_policy, "get_event_loop_policy")
3776+
GET_MOD_ATTR(state->asyncio_get_event_loop_policy, "_get_event_loop_policy")
37773777

37783778
WITH_MOD("asyncio.base_futures")
37793779
GET_MOD_ATTR(state->asyncio_future_repr_func, "_future_repr")

0 commit comments

Comments
 (0)