All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: Max Reitz <mreitz@redhat.com>
Cc: ehabkost@redhat.com, qemu-block@nongnu.org,
	John Snow <jsnow@redhat.com>,
	qemu-devel@nongnu.org, armbru@redhat.com, philmd@redhat.com
Subject: Re: [PATCH v10 10/14] iotests: add hmp helper with logging
Date: Wed, 1 Apr 2020 15:51:26 +0200	[thread overview]
Message-ID: <20200401135126.GA27663@linux.fritz.box> (raw)
In-Reply-To: <19eedbae-0660-5a28-e20b-ddf82a36fe73@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 3661 bytes --]

Am 01.04.2020 um 14:28 hat Max Reitz geschrieben:
> On 31.03.20 16:00, Kevin Wolf wrote:
> > Am 31.03.2020 um 12:21 hat Max Reitz geschrieben:
> >> On 31.03.20 02:00, John Snow wrote:
> >>> Minor cleanup for HMP functions; helps with line length and consolidates
> >>> HMP helpers through one implementation function.
> >>>
> >>> Although we are adding a universal toggle to turn QMP logging on or off,
> >>> many existing callers to hmp functions don't expect that output to be
> >>> logged, which causes quite a few changes in the test output.
> >>>
> >>> For now, offer a use_log parameter.
> >>>
> >>>
> >>> Typing notes:
> >>>
> >>> QMPResponse is just an alias for Dict[str, Any]. It holds no special
> >>> meanings and it is not a formal subtype of Dict[str, Any]. It is best
> >>> thought of as a lexical synonym.
> >>>
> >>> We may well wish to add stricter subtypes in the future for certain
> >>> shapes of data that are not formalized as Python objects, at which point
> >>> we can simply retire the alias and allow mypy to more strictly check
> >>> usages of the name.
> >>>
> >>> Signed-off-by: John Snow <jsnow@redhat.com>
> >>> ---
> >>>  tests/qemu-iotests/iotests.py | 35 ++++++++++++++++++++++-------------
> >>>  1 file changed, 22 insertions(+), 13 deletions(-)
> >>
> >> Reviewed-by: Max Reitz <mreitz@redhat.com>
> >>
> >>> diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
> >>> index b08bcb87e1..dfc753c319 100644
> >>> --- a/tests/qemu-iotests/iotests.py
> >>> +++ b/tests/qemu-iotests/iotests.py
> >>> @@ -37,6 +37,10 @@
> >>>  
> >>>  assert sys.version_info >= (3, 6)
> >>>  
> >>> +# Type Aliases
> >>> +QMPResponse = Dict[str, Any]
> >>> +
> >>> +
> >>>  faulthandler.enable()
> >>>  
> >>>  # This will not work if arguments contain spaces but is necessary if we
> >>> @@ -540,25 +544,30 @@ def add_incoming(self, addr):
> >>>          self._args.append(addr)
> >>>          return self
> >>>  
> >>> -    def pause_drive(self, drive, event=None):
> >>> -        '''Pause drive r/w operations'''
> >>> +    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)
> >>
> >> Hm.  I suppose I should take this chance to understand something about
> >> mypy.  QEMUMachine.qmp() isn’t typed, so mypy can’t check that this
> >> really returns QMPResponse.  Is there some flag to make it?  Like
> >> --actually-check-types?
> > 
> > There is --check-untyped-defs, but I'm not sure if that actually changes
> > the return type of untyped functions from Any to an inferred type. I
> > kind of doubt it.
> 
> Well, but Any doesn’t fit into QMPResponse, so there should be an error
> reported somewhere.

Any is the void* of Python typing. It's compatible with everything else,
in both directions.

> >> (--strict seems, well, overly strict?  Like not allowing generics, I
> >> don’t see why.  Or I suppose for the time being we want to allow untyped
> >> definitions, as long as they don’t break type assertions such as it kind
> >> of does here...?)
> > 
> > At least, --strict does actually complain about this one because Any
> > isn't good enough any more (it includes --warn-return-any):
> 
> Hm, yes, but we’re not at a point where it’s really feasible to enable
> --strict...

We're not yet, but I think it's a reasonable goal.

Kevin

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

  parent reply	other threads:[~2020-04-01 13:52 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-31  0:00 [PATCH v10 00/14] iotests: use python logging John Snow
2020-03-31  0:00 ` [PATCH v10 01/14] iotests: do a light delinting John Snow
2020-03-31  0:00 ` [PATCH v10 02/14] iotests: don't use 'format' for drive_add John Snow
2020-03-31  0:00 ` [PATCH v10 03/14] iotests: ignore import warnings from pylint John Snow
2020-03-31  0:00 ` [PATCH v10 04/14] iotests: replace mutable list default args John Snow
2020-03-31  0:00 ` [PATCH v10 05/14] iotests: add pylintrc file John Snow
2020-03-31  0:00 ` [PATCH v10 06/14] iotests: alphabetize standard imports John Snow
2020-03-31  8:00   ` Philippe Mathieu-Daudé
2020-03-31  0:00 ` [PATCH v10 07/14] iotests: drop pre-Python 3.4 compatibility code John Snow
2020-03-31  0:00 ` [PATCH v10 08/14] iotests: touch up log function signature John Snow
2020-03-31  0:00 ` [PATCH v10 09/14] iotests: limit line length to 79 chars John Snow
2020-03-31  0:00 ` [PATCH v10 10/14] iotests: add hmp helper with logging John Snow
2020-03-31 10:21   ` Max Reitz
2020-03-31 14:00     ` Kevin Wolf
2020-04-01 12:28       ` Max Reitz
2020-04-01 12:42         ` Max Reitz
2020-04-01 13:51         ` Kevin Wolf [this message]
2020-04-01 14:53           ` Max Reitz
2020-03-31 17:23     ` John Snow
2020-03-31 17:39       ` Kevin Wolf
2020-04-01 12:40         ` Max Reitz
2020-04-02 18:27           ` John Snow
2020-04-03  7:46             ` Kevin Wolf
2020-04-03  8:57             ` Max Reitz
2020-04-04  2:38               ` John Snow
2020-03-31  0:00 ` [PATCH v10 11/14] iotests: add script_initialize John Snow
2020-03-31  0:00 ` [PATCH v10 12/14] iotest 258: use script_main John Snow
2020-03-31  0:00 ` [PATCH v10 13/14] iotests: Mark verify functions as private John Snow
2020-03-31 10:40   ` Max Reitz
2020-03-31  0:00 ` [PATCH v10 14/14] iotests: use python logging for iotests.log() John Snow
2020-03-31 13:44   ` Kevin Wolf
2020-05-14  6:24     ` John Snow
2020-05-14 10:06       ` Kevin Wolf
2020-05-14 19:54         ` John Snow
2020-05-15  9:03           ` Kevin Wolf
2020-05-18 18:29             ` John Snow
2020-03-31 15:07 ` [PATCH v10 00/14] iotests: use python logging Kevin Wolf
2020-04-28 11:46 ` Max Reitz
2020-04-28 12:21   ` Kevin Wolf
2020-04-28 17:36     ` John Snow
2020-04-29  8:08       ` Max Reitz

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=20200401135126.GA27663@linux.fritz.box \
    --to=kwolf@redhat.com \
    --cc=armbru@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=philmd@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /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.