On 6/2/21 9:10 AM, Vladimir Sementsov-Ogievskiy wrote:
> We often call qmp() with unpacking dict, like qmp('foo', **{...}).
> mypy don't really like it, it thinks that passed unpacked dict is a
> positional argument and complains that it type should be bool (because
> second argument of qmp() is conv_keys: bool).
>
> Allow passing dict directly, simplifying interface, and giving a way to
> satisfy mypy.
>
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> Reviewed-by: Max Reitz <mreitz@redhat.com>
> ---
> python/qemu/machine.py | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/python/qemu/machine.py b/python/qemu/machine.py
> index ff35f2cd6c..7a14605040 100644
> --- a/python/qemu/machine.py
> +++ b/python/qemu/machine.py
> @@ -549,11 +549,21 @@ def _qmp_args(cls, conv_keys: bool,
> return args
>
> def qmp(self, cmd: str,
> - conv_keys: bool = True,
> + args_dict: Optional[Dict[str, Any]] = None,
try using object here, too.
> + conv_keys: Optional[bool] = None,
> **args: Any) -> QMPMessage:
> """
> Invoke a QMP command and return the response dict
> """
> + if args_dict is not None:
> + assert not args
> + assert conv_keys is None
> + args = args_dict
> + conv_keys = False
> +
> + if conv_keys is None:
> + conv_keys = True
> +
> qmp_args = self._qmp_args(conv_keys, args)
> return self._qmp.cmd(cmd, args=qmp_args)
>
>
With the comment addressed:
Reviewed-by: John Snow <jsnow@redhat.com>
Thanks,
--js