bpo-41696: Fix handling of debug mode in asyncio.run (GH-22069) (#22071)

* bpo-41696: Fix handling of debug mode in asyncio.run

This allows PYTHONASYNCIODEBUG or -X dev to enable asyncio debug mode
when using asyncio.run

* 📜🤖 Added by blurb_it.

Co-authored-by: hauntsaninja <>
Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
(cherry picked from commit 0770ad948c)

Co-authored-by: Shantanu <12621235+hauntsaninja@users.noreply.github.com>

Co-authored-by: Shantanu <12621235+hauntsaninja@users.noreply.github.com>
This commit is contained in:
Miss Islington (bot) 2020-09-03 13:54:09 -07:00 committed by GitHub
parent 49571c0b0e
commit a2680058ee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 7 additions and 2 deletions

View file

@ -5,7 +5,7 @@ from . import events
from . import tasks from . import tasks
def run(main, *, debug=False): def run(main, *, debug=None):
"""Execute the coroutine and return the result. """Execute the coroutine and return the result.
This function runs the passed coroutine, taking care of This function runs the passed coroutine, taking care of
@ -39,6 +39,7 @@ def run(main, *, debug=False):
loop = events.new_event_loop() loop = events.new_event_loop()
try: try:
events.set_event_loop(loop) events.set_event_loop(loop)
if debug is not None:
loop.set_debug(debug) loop.set_debug(debug)
return loop.run_until_complete(main) return loop.run_until_complete(main)
finally: finally:

View file

@ -87,6 +87,9 @@ class RunTests(BaseTest):
asyncio.run(main(False)) asyncio.run(main(False))
asyncio.run(main(True), debug=True) asyncio.run(main(True), debug=True)
with mock.patch('asyncio.coroutines._is_debug_mode', lambda: True):
asyncio.run(main(True))
asyncio.run(main(False), debug=False)
def test_asyncio_run_from_running_loop(self): def test_asyncio_run_from_running_loop(self):
async def main(): async def main():

View file

@ -0,0 +1 @@
Fix handling of debug mode in :func:`asyncio.run`. This allows setting ``PYTHONASYNCIODEBUG`` or ``-X dev`` to enable asyncio debug mode when using :func:`asyncio.run`.