From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Fam Zheng" <fam@euphon.net>, "Kevin Wolf" <kwolf@redhat.com>,
"Vladimir Sementsov-Ogievskiy" <vsementsov@virtuozzo.com>,
"Eduardo Habkost" <ehabkost@redhat.com>,
qemu-block@nongnu.org, "Alex Bennée" <alex.bennee@linaro.org>,
"Markus Armbruster" <armbru@redhat.com>,
"Max Reitz" <mreitz@redhat.com>, "Cleber Rosa" <crosa@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>
Subject: Re: [PATCH RFC 26/32] python//machine.py: use qmp.command
Date: Thu, 28 May 2020 20:18:28 -0400 [thread overview]
Message-ID: <0baff903-779b-c583-8ba6-6a28a4a10a42@redhat.com> (raw)
In-Reply-To: <20200514055403.18902-27-jsnow@redhat.com>
[...]
>
> - def qmp(self, cmd, conv_keys=True, **args):
> - """
> - Invoke a QMP command and return the response dict
> - """
> + @classmethod
> + def _qmp_args(cls, _conv_keys: bool = True, **args: Any) -> Dict[str, Any]:
> qmp_args = dict()
> for key, value in args.items():
> - if conv_keys:
> + if _conv_keys:
> qmp_args[key.replace('_', '-')] = value
> else:
> qmp_args[key] = value
> + return qmp_args
>
> + def qmp(self, cmd: str,
> + conv_keys: bool = True,
> + **args: Any) -> QMPMessage:
This creates an interesting problem with iotests 297:
-Success: no issues found in 1 source file
+iotests.py:563: error: Argument 2 to "qmp" of "QEMUMachine" has
incompatible type "**Dict[str, str]"; expected "bool"
+Found 1 error in 1 file (checked 1 source file)
def hmp(self, command_line: str, use_log: bool = False) -> QMPResponse:
cmd = 'human-monitor-command'
kwargs = {'command-line': command_line}
if use_log:
return self.qmp_log(cmd, **kwargs)
else:
return self.qmp(cmd, **kwargs)
It seems like mypy is unable to understand that we are passing keyword
arguments, and instead believes we're passing something to the conv_keys
parameter.
(Is this a bug...?)
Even amending the function signature to indicate that conv_keys should
only ever appear as a keyword argument doesn't seem to help.
I'll have to think about a nice way to fix this; removing conv_keys out
of the argument namespace seems like the best approach.
qmp(cmd, foo=bar, hello=world)
qmp(cmd, **conv_keys(foo=bar, hello=world))
...but now this function looks really annoying to call.
Uh, I'll play around with this, but let me know if you have any cool ideas.
--js
next prev parent reply other threads:[~2020-05-29 0:19 UTC|newest]
Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-14 5:53 [PATCH RFC 00/32] python/qemu: refactor as installable package John Snow
2020-05-14 5:53 ` [PATCH RFC 01/32] python/qemu: create qemu.lib module John Snow
2020-05-18 18:14 ` Vladimir Sementsov-Ogievskiy
2020-05-18 18:23 ` John Snow
2020-05-18 19:33 ` Vladimir Sementsov-Ogievskiy
2020-05-19 0:27 ` John Snow
2020-05-19 10:54 ` Vladimir Sementsov-Ogievskiy
2020-05-26 15:07 ` Philippe Mathieu-Daudé
2020-06-02 11:15 ` Vladimir Sementsov-Ogievskiy
2020-05-26 15:22 ` Daniel P. Berrangé
2020-05-26 15:23 ` Philippe Mathieu-Daudé
2020-05-26 15:25 ` Daniel P. Berrangé
2020-05-27 14:28 ` John Snow
2020-05-27 14:31 ` Daniel P. Berrangé
2020-06-02 10:08 ` Kevin Wolf
2020-06-02 16:44 ` John Snow
2020-06-03 9:00 ` Kevin Wolf
2020-06-03 14:09 ` John Snow
2020-05-14 5:53 ` [PATCH RFC 02/32] scripts/qmp: Fix shebang and imports John Snow
2020-05-26 15:55 ` Philippe Mathieu-Daudé
2020-05-14 5:53 ` [PATCH RFC 03/32] python//machine.py: remove bare except John Snow
2020-05-14 13:55 ` Eric Blake
2020-05-14 14:26 ` John Snow
2020-05-26 15:08 ` Philippe Mathieu-Daudé
2020-05-26 15:09 ` Philippe Mathieu-Daudé
2020-06-02 11:01 ` Kevin Wolf
2020-06-02 16:47 ` John Snow
2020-05-14 5:53 ` [PATCH RFC 04/32] python/qemu/lib: delint, add pylintrc John Snow
2020-05-26 15:57 ` Philippe Mathieu-Daudé
2020-05-14 5:53 ` [PATCH RFC 05/32] python/qemu/lib: delint; add flake8 config John Snow
2020-05-26 15:58 ` Philippe Mathieu-Daudé
2020-05-31 9:57 ` Philippe Mathieu-Daudé
2020-05-14 5:53 ` [PATCH RFC 06/32] python/qemu: formalize as package John Snow
2020-05-26 16:00 ` Philippe Mathieu-Daudé
2020-05-14 5:53 ` [PATCH RFC 07/32] python/qemu: add README.rst John Snow
2020-05-14 5:53 ` [PATCH RFC 08/32] python/qemu: Add Pipfile John Snow
2020-05-14 5:53 ` [PATCH RFC 09/32] python/qemu: add pylint to Pipfile John Snow
2020-05-14 5:53 ` [PATCH RFC 10/32] python/qemu: Add flake8 " John Snow
2020-05-14 5:53 ` [PATCH RFC 11/32] python/qemu/lib: remove Python2 style super() calls John Snow
2020-05-14 6:01 ` Philippe Mathieu-Daudé
2020-05-31 9:58 ` Philippe Mathieu-Daudé
2020-05-14 5:53 ` [PATCH RFC 12/32] python/qemu/lib: fix socket.makefile() typing John Snow
2020-05-31 9:59 ` Philippe Mathieu-Daudé
2020-05-14 5:53 ` [PATCH RFC 13/32] python/qemu/lib: Adjust traceback typing John Snow
2020-05-26 16:01 ` Philippe Mathieu-Daudé
2020-05-31 10:01 ` Philippe Mathieu-Daudé
2020-05-14 5:53 ` [PATCH RFC 14/32] python//qmp.py: use True/False for non/blocking modes John Snow
2020-05-14 6:02 ` Philippe Mathieu-Daudé
2020-05-31 10:01 ` Philippe Mathieu-Daudé
2020-05-14 5:53 ` [PATCH RFC 15/32] python//qmp.py: Define common types John Snow
2020-05-14 5:53 ` [PATCH RFC 16/32] python//qmp.py: re-absorb MonitorResponseError John Snow
2020-05-14 6:03 ` Philippe Mathieu-Daudé
2020-05-14 5:53 ` [PATCH RFC 17/32] python//qmp.py: Do not return None from cmd_obj John Snow
2020-05-14 5:53 ` [PATCH RFC 18/32] python//qmp.py: add casts to JSON deserialization John Snow
2020-05-26 16:03 ` Philippe Mathieu-Daudé
2020-05-14 5:53 ` [PATCH RFC 19/32] python//qmp.py: add QMPProtocolError John Snow
2020-05-14 6:05 ` Philippe Mathieu-Daudé
2020-05-14 5:53 ` [PATCH RFC 20/32] python//qmp.py: assert sockfile is not None John Snow
2020-05-26 16:03 ` Philippe Mathieu-Daudé
2020-05-26 16:05 ` Philippe Mathieu-Daudé
2020-05-31 10:02 ` Philippe Mathieu-Daudé
2020-05-14 5:53 ` [PATCH RFC 21/32] python//machine.py: remove logging configuration John Snow
2020-05-14 6:06 ` Philippe Mathieu-Daudé
2020-05-31 10:03 ` Philippe Mathieu-Daudé
2020-05-14 5:53 ` [PATCH RFC 22/32] python//machine.py: Fix monitor address typing John Snow
2020-05-14 5:53 ` [PATCH RFC 23/32] python//machine.py: reorder __init__ John Snow
2020-05-14 6:08 ` Philippe Mathieu-Daudé
2020-05-14 5:53 ` [PATCH RFC 24/32] python//machine.py: Don't modify state in _base_args() John Snow
2020-05-14 5:53 ` [PATCH RFC 25/32] python//machine.py: Handle None events in event_wait John Snow
2020-05-14 5:53 ` [PATCH RFC 26/32] python//machine.py: use qmp.command John Snow
2020-05-29 0:18 ` John Snow [this message]
2020-06-02 10:18 ` Kevin Wolf
2020-06-02 10:26 ` Kevin Wolf
2020-06-02 20:11 ` John Snow
2020-05-14 5:53 ` [PATCH RFC 27/32] python//machine.py: Add _qmp access shim John Snow
2020-05-14 5:53 ` [PATCH RFC 28/32] python//machine.py: fix _popen access John Snow
2020-05-14 5:54 ` [PATCH RFC 29/32] python//qtest.py: Check before accessing _qtest John Snow
2020-05-14 6:13 ` Philippe Mathieu-Daudé
2020-05-31 10:04 ` Philippe Mathieu-Daudé
2020-05-14 5:54 ` [PATCH RFC 30/32] python/qemu/lib: make 'args' style arguments immutable John Snow
2020-05-14 5:54 ` [PATCH RFC 31/32] python/qemu: add mypy to Pipfile John Snow
2020-05-14 5:54 ` [PATCH RFC 32/32] python/qemu/lib: Add mypy type annotations John Snow
2020-05-18 12:41 ` [PATCH RFC 00/32] python/qemu: refactor as installable package Philippe Mathieu-Daudé
2020-05-18 14:15 ` John Snow
2020-05-21 18:48 ` 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=0baff903-779b-c583-8ba6-6a28a4a10a42@redhat.com \
--to=jsnow@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=armbru@redhat.com \
--cc=crosa@redhat.com \
--cc=ehabkost@redhat.com \
--cc=fam@euphon.net \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=philmd@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=vsementsov@virtuozzo.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).