From debbabd77f340758099212985dac75b3c1bedd47 Mon Sep 17 00:00:00 2001 From: John Snow Date: Wed, 15 Sep 2021 12:29:50 -0400 Subject: python/aqmp: add asyncio_run compatibility wrapper As a convenience. It isn't used by the library itself, but it is used by the test suite. It will also come in handy for users of the library still on Python 3.6. Signed-off-by: John Snow Message-id: 20210915162955.333025-23-jsnow@redhat.com Signed-off-by: John Snow --- python/qemu/aqmp/util.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'python/qemu') diff --git a/python/qemu/aqmp/util.py b/python/qemu/aqmp/util.py index 52a1532..eaa5fc7 100644 --- a/python/qemu/aqmp/util.py +++ b/python/qemu/aqmp/util.py @@ -147,6 +147,25 @@ async def wait_closed(writer: asyncio.StreamWriter) -> None: await asyncio.sleep(0) +def asyncio_run(coro: Coroutine[Any, Any, T], *, debug: bool = False) -> T: + """ + Python 3.6-compatible `asyncio.run` wrapper. + + :param coro: A coroutine to execute now. + :return: The return value from the coroutine. + """ + if sys.version_info >= (3, 7): + return asyncio.run(coro, debug=debug) + + # Python 3.6 + loop = asyncio.get_event_loop() + loop.set_debug(debug) + ret = loop.run_until_complete(coro) + loop.close() + + return ret + + # ---------------------------- # Section: Logging & Debugging # ---------------------------- -- cgit v1.1