On Mon, Jan 10, 2022 at 06:28:47PM -0500, John Snow wrote: > Copy the remaining type definitions from QMP into the qemu.aqmp.legacy > module. Now, users that require the legacy interface don't need to > import anything else but qemu.aqmp.legacy wrapper. > > Signed-off-by: John Snow <js...@redhat.com> > Reviewed-by: Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.com> > --- > python/qemu/aqmp/legacy.py | 22 ++++++++++++++++++++-- > python/qemu/aqmp/protocol.py | 16 ++++++++++------ > 2 files changed, 30 insertions(+), 8 deletions(-) > > diff --git a/python/qemu/aqmp/legacy.py b/python/qemu/aqmp/legacy.py > index 2ccb136b02..9431fe9330 100644 > --- a/python/qemu/aqmp/legacy.py > +++ b/python/qemu/aqmp/legacy.py > @@ -6,7 +6,9 @@ > > import asyncio > from typing import ( > + Any, > Awaitable, > + Dict, > List, > Optional, > TypeVar, > @@ -14,13 +16,29 @@ > ) > > import qemu.qmp > -from qemu.qmp import QMPMessage, QMPReturnValue, SocketAddrT > > from .error import AQMPError > -from .protocol import Runstate > +from .protocol import Runstate, SocketAddrT > from .qmp_client import QMPClient > > > +#: QMPMessage is an entire QMP message of any kind. > +QMPMessage = Dict[str, Any] > + > +#: QMPReturnValue is the 'return' value of a command. > +QMPReturnValue = object > + > +#: QMPObject is any object in a QMP message. > +QMPObject = Dict[str, object] > + > +# QMPMessage can be outgoing commands or incoming events/returns. > +# QMPReturnValue is usually a dict/json object, but due to QAPI's > +# 'returns-whitelist', it can actually be anything. > +# > +# {'return': {}} is a QMPMessage, > +# {} is the QMPReturnValue. > + > + > # pylint: disable=missing-docstring > > > diff --git a/python/qemu/aqmp/protocol.py b/python/qemu/aqmp/protocol.py > index c4fbe35a0e..5b4f2f0d0a 100644 > --- a/python/qemu/aqmp/protocol.py > +++ b/python/qemu/aqmp/protocol.py > @@ -46,6 +46,10 @@ > _U = TypeVar('_U') > _TaskFN = Callable[[], Awaitable[None]] # aka ``async def func() -> None`` > > +InternetAddrT = Tuple[str, int] > +UnixAddrT = str > +SocketAddrT = Union[UnixAddrT, InternetAddrT] > + > > class Runstate(Enum): > """Protocol session runstate.""" > @@ -257,7 +261,7 @@ async def runstate_changed(self) -> Runstate: > > @upper_half > @require(Runstate.IDLE) > - async def accept(self, address: Union[str, Tuple[str, int]], > + async def accept(self, address: SocketAddrT, > ssl: Optional[SSLContext] = None) -> None: > """ > Accept a connection and begin processing message queues. > @@ -275,7 +279,7 @@ async def accept(self, address: Union[str, Tuple[str, > int]], > > @upper_half > @require(Runstate.IDLE) > - async def connect(self, address: Union[str, Tuple[str, int]], > + async def connect(self, address: SocketAddrT, > ssl: Optional[SSLContext] = None) -> None: > """ > Connect to the server and begin processing message queues. > @@ -337,7 +341,7 @@ def _set_state(self, state: Runstate) -> None: > > @upper_half > async def _new_session(self, > - address: Union[str, Tuple[str, int]], > + address: SocketAddrT, > ssl: Optional[SSLContext] = None, > accept: bool = False) -> None: > """ > @@ -397,7 +401,7 @@ async def _new_session(self, > @upper_half > async def _establish_connection( > self, > - address: Union[str, Tuple[str, int]], > + address: SocketAddrT, > ssl: Optional[SSLContext] = None, > accept: bool = False > ) -> None: > @@ -424,7 +428,7 @@ async def _establish_connection( > await self._do_connect(address, ssl) > > @upper_half > - async def _do_accept(self, address: Union[str, Tuple[str, int]], > + async def _do_accept(self, address: SocketAddrT, > ssl: Optional[SSLContext] = None) -> None: > """ > Acting as the transport server, accept a single connection. > @@ -482,7 +486,7 @@ async def _client_connected_cb(reader: > asyncio.StreamReader, > self.logger.debug("Connection accepted.") > > @upper_half > - async def _do_connect(self, address: Union[str, Tuple[str, int]], > + async def _do_connect(self, address: SocketAddrT, > ssl: Optional[SSLContext] = None) -> None: > """ > Acting as the transport client, initiate a connection to a server.
This makes sense to me. Reviewed-by: Beraldo Leal <bl...@redhat.com> -- Beraldo