All of lore.kernel.org
 help / color / mirror / Atom feed
From: Beraldo Leal <bleal@redhat.com>
To: John Snow <jsnow@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
	Daniel Berrange <berrange@redhat.com>,
	qemu-block@nongnu.org, qemu-devel@nongnu.org,
	Wainer Moschetta <wainersm@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	Hanna Reitz <hreitz@redhat.com>,
	Gerd Hoffmann <kraxel@redhat.com>, Cleber Rosa <crosa@redhat.com>
Subject: Re: [PATCH v3 08/31] python/aqmp: copy type definitions from qmp
Date: Wed, 12 Jan 2022 10:32:19 -0300	[thread overview]
Message-ID: <20220112133219.ekwowrd6ao3pkjiw@laptop.redhat> (raw)
In-Reply-To: <20220110232910.1923864-9-jsnow@redhat.com>

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 <jsnow@redhat.com>
> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@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 <bleal@redhat.com>

--
Beraldo



  reply	other threads:[~2022-01-12 14:33 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-10 23:28 [PATCH v3 00/31] Python: delete synchronous qemu.qmp package John Snow
2022-01-10 23:28 ` [PATCH v3 01/31] python/aqmp: use absolute import statement John Snow
2022-01-10 23:28 ` [PATCH v3 02/31] Python/aqmp: fix type definitions for mypy 0.920 John Snow
2022-01-10 23:28 ` [PATCH v3 03/31] python: update type hints for mypy 0.930 John Snow
2022-01-10 23:28 ` [PATCH v3 04/31] simplebench: Fix Python syntax error (reported by LGTM) John Snow
2022-01-10 23:28 ` [PATCH v3 05/31] python/aqmp: fix docstring typo John Snow
2022-01-12 13:26   ` Beraldo Leal
2022-01-10 23:28 ` [PATCH v3 06/31] python/aqmp: add __del__ method to legacy interface John Snow
2022-01-10 23:28 ` [PATCH v3 07/31] python/aqmp: handle asyncio.TimeoutError on execute() John Snow
2022-01-10 23:28 ` [PATCH v3 08/31] python/aqmp: copy type definitions from qmp John Snow
2022-01-12 13:32   ` Beraldo Leal [this message]
2022-01-10 23:28 ` [PATCH v3 09/31] python/aqmp: add SocketAddrT to package root John Snow
2022-01-10 23:28 ` [PATCH v3 10/31] python/aqmp: rename AQMPError to QMPError John Snow
2022-01-12 13:35   ` Beraldo Leal
2022-01-10 23:28 ` [PATCH v3 11/31] python/qemu-ga-client: don't use deprecated CLI syntax in usage comment John Snow
2022-01-10 23:28 ` [PATCH v3 12/31] python/qmp: switch qemu-ga-client to AQMP John Snow
2022-01-10 23:28 ` [PATCH v3 13/31] python/qmp: switch qom tools " John Snow
2022-01-10 23:28 ` [PATCH v3 14/31] python/qmp: switch qmp-shell " John Snow
2022-01-12 13:52   ` Beraldo Leal
2022-01-12 17:35     ` John Snow
2022-01-10 23:28 ` [PATCH v3 15/31] python: move qmp utilities to python/qemu/utils John Snow
2022-01-12 13:55   ` Beraldo Leal
2022-01-10 23:28 ` [PATCH v3 16/31] python: move qmp-shell under the AQMP package John Snow
2022-01-12 13:46   ` Beraldo Leal
2022-01-10 23:28 ` [PATCH v3 17/31] python/machine: permanently switch to AQMP John Snow
2022-01-10 23:28 ` [PATCH v3 18/31] scripts/cpu-x86-uarch-abi: fix CLI parsing John Snow
2022-01-10 23:28 ` [PATCH v3 19/31] scripts/cpu-x86-uarch-abi: switch to AQMP John Snow
2022-01-10 23:28 ` [PATCH v3 20/31] scripts/render-block-graph: " John Snow
2022-01-10 23:29 ` [PATCH v3 21/31] scripts/bench-block-job: " John Snow
2022-01-10 23:29 ` [PATCH v3 22/31] iotests/mirror-top-perms: " John Snow
2022-01-10 23:29 ` [PATCH v3 23/31] iotests: " John Snow
2022-01-14 19:12   ` Eric Blake
2022-01-17 19:32     ` John Snow
2022-01-10 23:29 ` [PATCH v3 24/31] python: temporarily silence pylint duplicate-code warnings John Snow
2022-01-10 23:29 ` [PATCH v3 25/31] python/aqmp: take QMPBadPortError and parse_address from qemu.qmp John Snow
2022-01-10 23:29 ` [PATCH v3 26/31] python/aqmp: fully separate from qmp.QEMUMonitorProtocol John Snow
2022-01-10 23:29 ` [PATCH v3 27/31] python/aqmp: copy qmp docstrings to qemu.aqmp.legacy John Snow
2022-01-10 23:29 ` [PATCH v3 28/31] python: remove the old QMP package John Snow
2022-01-10 23:29 ` [PATCH v3 29/31] python: re-enable pylint duplicate-code warnings John Snow
2022-01-10 23:29 ` [PATCH v3 30/31] python: rename qemu.aqmp to qemu.qmp John Snow
2022-01-12 14:21   ` Beraldo Leal
2022-01-10 23:29 ` [PATCH v3 31/31] python: rename 'aqmp-tui' to 'qmp-tui' John Snow
2022-01-12 14:00   ` Beraldo Leal
2022-01-10 23:33 ` [PATCH v3 00/31] Python: delete synchronous qemu.qmp package John Snow
2022-01-12 19:51   ` John Snow
2022-01-21  0:17 ` John Snow

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220112133219.ekwowrd6ao3pkjiw@laptop.redhat \
    --to=bleal@redhat.com \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=crosa@redhat.com \
    --cc=eduardo@habkost.net \
    --cc=hreitz@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=vsementsov@virtuozzo.com \
    --cc=wainersm@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.