We often call qmp() with unpacking dict, like qmp('foo', **{...}). mypy don't really like it, it things 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 possing dict directly, simplifying interface, and giving a way to satisfy mypy. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.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, + 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) -- 2.29.2