On Tue, Jul 15, 2025 at 10:31 AM Daniel P. Berrangé <berra...@redhat.com> wrote: > > Our minimum python is now 3.9, so back compat with python > 3.6 is no longer required. > > Signed-off-by: Daniel P. Berrangé <berra...@redhat.com>
Reviewed-by: John Snow <js...@redhat.com> > --- > python/qemu/qmp/protocol.py | 3 +-- > python/qemu/qmp/util.py | 29 ----------------------------- > 2 files changed, 1 insertion(+), 31 deletions(-) > > diff --git a/python/qemu/qmp/protocol.py b/python/qemu/qmp/protocol.py > index 9a7ada4a1e..deb6b20d29 100644 > --- a/python/qemu/qmp/protocol.py > +++ b/python/qemu/qmp/protocol.py > @@ -41,7 +41,6 @@ > flush, > pretty_traceback, > upper_half, > - wait_closed, > ) > > > @@ -830,7 +829,7 @@ async def _bh_close_stream(self, error_pathway: bool = > False) -> None: > > self.logger.debug("Waiting for StreamWriter to close ...") > try: > - await wait_closed(self._writer) > + await self._writer.wait_closed() > except Exception: # pylint: disable=broad-except > # It's hard to tell if the Stream is already closed or > # not. Even if one of the tasks has failed, it may have > diff --git a/python/qemu/qmp/util.py b/python/qemu/qmp/util.py > index 39fc341f2f..b5e9750576 100644 > --- a/python/qemu/qmp/util.py > +++ b/python/qemu/qmp/util.py > @@ -104,35 +104,6 @@ def create_task(coro: Coroutine[Any, Any, T], > return asyncio.ensure_future(coro, loop=loop) > > > -async def wait_closed(writer: asyncio.StreamWriter) -> None: > - """ > - Python 3.6-compatible `asyncio.StreamWriter.wait_closed` wrapper. > - > - :param writer: The `asyncio.StreamWriter` to wait on. > - """ > - if sys.version_info >= (3, 7): > - await writer.wait_closed() > - return > - > - # Python 3.6 > - transport = writer.transport > - assert isinstance(transport, asyncio.WriteTransport) > - > - while not transport.is_closing(): > - await asyncio.sleep(0) > - > - # This is an ugly workaround, but it's the best I can come up with. > - sock = transport.get_extra_info('socket') > - > - if sock is None: > - # Our transport doesn't have a socket? ... > - # Nothing we can reasonably do. > - return > - > - while sock.fileno() != -1: > - await asyncio.sleep(0) > - > - > def asyncio_run(coro: Coroutine[Any, Any, T], *, debug: bool = False) -> T: > """ > Python 3.6-compatible `asyncio.run` wrapper. > -- > 2.49.0 >