Skip to content

Commit 05d27a8

Browse files
gh-130322: drop deprecation of asyncio.set_event_loop (#132349)
1 parent e6ef47a commit 05d27a8

File tree

16 files changed

+46
-64
lines changed

16 files changed

+46
-64
lines changed

Doc/deprecations/pending-removal-in-3.16.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ Pending removal in Python 3.16
3232
* :class:`asyncio.WindowsProactorEventLoopPolicy`
3333
* :func:`asyncio.get_event_loop_policy`
3434
* :func:`asyncio.set_event_loop_policy`
35-
* :func:`asyncio.set_event_loop`
3635

3736
Users should use :func:`asyncio.run` or :class:`asyncio.Runner` with
3837
*loop_factory* to use the desired event loop implementation.

Doc/library/asyncio-eventloop.rst

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,18 +65,14 @@ an event loop:
6565
.. note::
6666

6767
The :mod:`!asyncio` policy system is deprecated and will be removed
68-
in Python 3.16; from there on, this function will always return the
69-
running event loop.
70-
68+
in Python 3.16; from there on, this function will return the current
69+
running event loop if present else it will return the
70+
loop set by :func:`set_event_loop`.
7171

7272
.. function:: set_event_loop(loop)
7373

7474
Set *loop* as the current event loop for the current OS thread.
7575

76-
.. deprecated:: 3.14
77-
The :func:`set_event_loop` function is deprecated and will be removed
78-
in Python 3.16.
79-
8076
.. function:: new_event_loop()
8177

8278
Create and return a new event loop object.

Lib/asyncio/__main__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ def interrupt(self) -> None:
149149

150150
return_code = 0
151151
loop = asyncio.new_event_loop()
152-
asyncio._set_event_loop(loop)
152+
asyncio.set_event_loop(loop)
153153

154154
repl_locals = {'asyncio': asyncio}
155155
for key in {'__name__', '__package__',

Lib/asyncio/events.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
"_set_event_loop_policy",
1616
"set_event_loop_policy",
1717
"get_event_loop",
18-
"_set_event_loop",
1918
"set_event_loop",
2019
"new_event_loop",
2120
"_set_running_loop",
@@ -835,13 +834,9 @@ def get_event_loop():
835834
return _get_event_loop_policy().get_event_loop()
836835

837836

838-
def _set_event_loop(loop):
839-
_get_event_loop_policy().set_event_loop(loop)
840-
841837
def set_event_loop(loop):
842838
"""Equivalent to calling get_event_loop_policy().set_event_loop(loop)."""
843-
warnings._deprecated('asyncio.set_event_loop', remove=(3,16))
844-
_set_event_loop(loop)
839+
_get_event_loop_policy().set_event_loop(loop)
845840

846841

847842
def new_event_loop():

Lib/asyncio/runners.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def close(self):
7474
loop.shutdown_default_executor(constants.THREAD_JOIN_TIMEOUT))
7575
finally:
7676
if self._set_event_loop:
77-
events._set_event_loop(None)
77+
events.set_event_loop(None)
7878
loop.close()
7979
self._loop = None
8080
self._state = _State.CLOSED
@@ -147,7 +147,7 @@ def _lazy_init(self):
147147
if not self._set_event_loop:
148148
# Call set_event_loop only once to avoid calling
149149
# attach_loop multiple times on child watchers
150-
events._set_event_loop(self._loop)
150+
events.set_event_loop(self._loop)
151151
self._set_event_loop = True
152152
else:
153153
self._loop = self._loop_factory()

Lib/test/test_asyncgen.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -624,7 +624,7 @@ class AsyncGenAsyncioTest(unittest.TestCase):
624624

625625
def setUp(self):
626626
self.loop = asyncio.new_event_loop()
627-
asyncio._set_event_loop(None)
627+
asyncio.set_event_loop(None)
628628

629629
def tearDown(self):
630630
self.loop.close()

Lib/test/test_asyncio/functional.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def loop_exception_handler(self, loop, context):
2424

2525
def setUp(self):
2626
self.loop = self.new_loop()
27-
asyncio._set_event_loop(None)
27+
asyncio.set_event_loop(None)
2828

2929
self.loop.set_exception_handler(self.loop_exception_handler)
3030
self.__unhandled_exceptions = []
@@ -39,7 +39,7 @@ def tearDown(self):
3939
self.fail('unexpected calls to loop.call_exception_handler()')
4040

4141
finally:
42-
asyncio._set_event_loop(None)
42+
asyncio.set_event_loop(None)
4343
self.loop = None
4444

4545
def tcp_server(self, server_prog, *,

Lib/test/test_asyncio/test_base_events.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -336,10 +336,10 @@ def check_in_thread(loop, event, debug, create_loop, fut):
336336
if create_loop:
337337
loop2 = base_events.BaseEventLoop()
338338
try:
339-
asyncio._set_event_loop(loop2)
339+
asyncio.set_event_loop(loop2)
340340
self.check_thread(loop, debug)
341341
finally:
342-
asyncio._set_event_loop(None)
342+
asyncio.set_event_loop(None)
343343
loop2.close()
344344
else:
345345
self.check_thread(loop, debug)
@@ -695,7 +695,7 @@ def default_exception_handler(self, context):
695695

696696
loop = Loop()
697697
self.addCleanup(loop.close)
698-
asyncio._set_event_loop(loop)
698+
asyncio.set_event_loop(loop)
699699

700700
def run_loop():
701701
def zero_error():
@@ -1988,7 +1988,7 @@ def stop_loop_cb(loop):
19881988
async def stop_loop_coro(loop):
19891989
loop.stop()
19901990

1991-
asyncio._set_event_loop(self.loop)
1991+
asyncio.set_event_loop(self.loop)
19921992
self.loop.set_debug(True)
19931993
self.loop.slow_callback_duration = 0.0
19941994

Lib/test/test_asyncio/test_events.py

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ async def doit():
5757
return 'hello'
5858

5959
with contextlib.closing(asyncio.new_event_loop()) as loop:
60-
asyncio._set_event_loop(loop)
60+
asyncio.set_event_loop(loop)
6161
return loop.run_until_complete(doit())
6262

6363

@@ -2830,14 +2830,6 @@ async def inner():
28302830

28312831
class PolicyTests(unittest.TestCase):
28322832

2833-
def test_asyncio_set_event_loop_deprecation(self):
2834-
with self.assertWarnsRegex(
2835-
DeprecationWarning, "'asyncio.set_event_loop' is deprecated"):
2836-
loop = asyncio.new_event_loop()
2837-
asyncio.set_event_loop(loop)
2838-
self.assertIs(loop, asyncio.get_event_loop())
2839-
loop.close()
2840-
28412833
def test_abstract_event_loop_policy_deprecation(self):
28422834
with self.assertWarnsRegex(
28432835
DeprecationWarning, "'asyncio.AbstractEventLoopPolicy' is deprecated"):
@@ -2974,14 +2966,14 @@ def setUp(self):
29742966
super().setUp()
29752967

29762968
self.loop = asyncio.new_event_loop()
2977-
asyncio._set_event_loop(self.loop)
2969+
asyncio.set_event_loop(self.loop)
29782970

29792971
def tearDown(self):
29802972
try:
29812973
super().tearDown()
29822974
finally:
29832975
self.loop.close()
2984-
asyncio._set_event_loop(None)
2976+
asyncio.set_event_loop(None)
29852977

29862978
events._get_running_loop = self._get_running_loop_saved
29872979
events._set_running_loop = self._set_running_loop_saved
@@ -3053,7 +3045,7 @@ def get_event_loop(self):
30533045

30543046
with self.assertRaises(TestError):
30553047
asyncio.get_event_loop()
3056-
asyncio._set_event_loop(None)
3048+
asyncio.set_event_loop(None)
30573049
with self.assertRaises(TestError):
30583050
asyncio.get_event_loop()
30593051

@@ -3068,10 +3060,10 @@ async def func():
30683060

30693061
loop.run_until_complete(func())
30703062

3071-
asyncio._set_event_loop(loop)
3063+
asyncio.set_event_loop(loop)
30723064
with self.assertRaises(TestError):
30733065
asyncio.get_event_loop()
3074-
asyncio._set_event_loop(None)
3066+
asyncio.set_event_loop(None)
30753067
with self.assertRaises(TestError):
30763068
asyncio.get_event_loop()
30773069

@@ -3095,7 +3087,7 @@ def test_get_event_loop_returns_running_loop2(self):
30953087
with self.assertRaisesRegex(RuntimeError, 'no current'):
30963088
asyncio.get_event_loop()
30973089

3098-
asyncio._set_event_loop(None)
3090+
asyncio.set_event_loop(None)
30993091
with self.assertRaisesRegex(RuntimeError, 'no current'):
31003092
asyncio.get_event_loop()
31013093

@@ -3106,10 +3098,10 @@ async def func():
31063098

31073099
loop.run_until_complete(func())
31083100

3109-
asyncio._set_event_loop(loop)
3101+
asyncio.set_event_loop(loop)
31103102
self.assertIs(asyncio.get_event_loop(), loop)
31113103

3112-
asyncio._set_event_loop(None)
3104+
asyncio.set_event_loop(None)
31133105
with self.assertRaisesRegex(RuntimeError, 'no current'):
31143106
asyncio.get_event_loop()
31153107

Lib/test/test_asyncio/test_futures.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,8 @@ async def test():
178178

179179
def test_constructor_use_global_loop(self):
180180
# Deprecated in 3.10, undeprecated in 3.12
181-
asyncio._set_event_loop(self.loop)
182-
self.addCleanup(asyncio._set_event_loop, None)
181+
asyncio.set_event_loop(self.loop)
182+
self.addCleanup(asyncio.set_event_loop, None)
183183
f = self._new_future()
184184
self.assertIs(f._loop, self.loop)
185185
self.assertIs(f.get_loop(), self.loop)
@@ -566,8 +566,8 @@ async def test():
566566

567567
def test_wrap_future_use_global_loop(self):
568568
# Deprecated in 3.10, undeprecated in 3.12
569-
asyncio._set_event_loop(self.loop)
570-
self.addCleanup(asyncio._set_event_loop, None)
569+
asyncio.set_event_loop(self.loop)
570+
self.addCleanup(asyncio.set_event_loop, None)
571571
def run(arg):
572572
return (arg, threading.get_ident())
573573
ex = concurrent.futures.ThreadPoolExecutor(1)

0 commit comments

Comments
 (0)