]> git.ipfire.org Git - thirdparty/qemu.git/commit
python: backport 'Remove deprecated get_event_loop calls'
authorJohn Snow <jsnow@redhat.com>
Tue, 13 Aug 2024 13:35:30 +0000 (09:35 -0400)
committerMichael Tokarev <mjt@tls.msk.ru>
Tue, 16 Sep 2025 20:34:00 +0000 (23:34 +0300)
commit1034cd169cfa55d7abf68a9de468e14ae15fd9f5
tree783a41444f266952fcf29206b2833d5914e83f29
parent67d93471944d68e5a4c5d5e68e2704d50e24a1ce
python: backport 'Remove deprecated get_event_loop calls'

This method was deprecated in 3.12 because it ordinarily should not be
used from coroutines; if there is not a currently running event loop,
this automatically creates a new event loop - which is usually not what
you want from code that would ever run in the bottom half.

In our case, we do want this behavior in two places:

(1) The synchronous shim, for convenience: this allows fully sync
programs to use QEMUMonitorProtocol() without needing to set up an event
loop beforehand. This is intentional to fully box in the async
complexities into the legacy sync shim.

(2) The qmp_tui shell; instead of relying on asyncio.run to create and
run an asyncio program, we need to be able to pass the current asyncio
loop to urwid setup functions. For convenience, again, we create one if
one is not present to simplify the creation of the TUI appliance.

The remaining user of get_event_loop() was in fact one of the erroneous
users that should not have been using this function: if there's no
running event loop inside of a coroutine, you're in big trouble :)

Signed-off-by: John Snow <jsnow@redhat.com>
cherry picked from commit python-qemu-qmp@aa1ff9907603a3033296027e1bd021133df86ef1
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
(cherry picked from commit 5d99044d09db0fa8c2b3294e301927118f9effc9)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
python/qemu/qmp/legacy.py
python/qemu/qmp/qmp_tui.py
python/tests/protocol.py