From: John Snow <jsnow@redhat.com>
To: Eduardo Habkost <ehabkost@redhat.com>,
Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org, Cleber Rosa <crosa@redhat.com>
Subject: Re: [PATCH v2 02/16] qapi/expr.py: Check for dict instead of OrderedDict
Date: Tue, 17 Nov 2020 14:48:04 -0500 [thread overview]
Message-ID: <7d2324b2-11e4-3719-37fe-ba935c9f4e16@redhat.com> (raw)
In-Reply-To: <20201117180847.GI1235237@habkost.net>
On 11/17/20 1:08 PM, Eduardo Habkost wrote:
> On Tue, Nov 17, 2020 at 05:30:04PM +0100, Markus Armbruster wrote:
>> John Snow <jsnow@redhat.com> writes:
>>
>>> OrderedDict is a subtype of dict, so we can check for a more general form.
>>>
>>> Signed-off-by: John Snow <jsnow@redhat.com>
>>> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
>>> Reviewed-by: Cleber Rosa <crosa@redhat.com>
>>> ---
>>> scripts/qapi/expr.py | 5 ++---
>>> 1 file changed, 2 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/scripts/qapi/expr.py b/scripts/qapi/expr.py
>>> index 35695c4c653b..5694c501fa38 100644
>>> --- a/scripts/qapi/expr.py
>>> +++ b/scripts/qapi/expr.py
>>> @@ -14,7 +14,6 @@
>>> # This work is licensed under the terms of the GNU GPL, version 2.
>>> # See the COPYING file in the top-level directory.
>>>
>>> -from collections import OrderedDict
>>> import re
>>>
>>> from .common import c_name
>>> @@ -131,7 +130,7 @@ def check_if_str(ifcond):
>>>
>>>
>>> def normalize_members(members):
>>> - if isinstance(members, OrderedDict):
>>> + if isinstance(members, dict):
>>> for key, arg in members.items():
>>> if isinstance(arg, dict):
>>> continue
>>> @@ -162,7 +161,7 @@ def check_type(value, info, source,
>>> if not allow_dict:
>>> raise QAPISemError(info, "%s should be a type name" % source)
>>>
>>> - if not isinstance(value, OrderedDict):
>>> + if not isinstance(value, dict):
>>> raise QAPISemError(info,
>>> "%s should be an object or type name" % source)
>>
>> Plain dict remembers insertion order since Python 3.6, but it wasn't
>> formally promised until 3.7.
>>
>> Can we simply ditch OrderedDict entirely?
>
> In theory, our build requirement is "Python >= 3.6", not
> "CPython >= 3.6". In practice, I don't expect anybody to ever
> use any other Python implementation except CPython to build QEMU.
>
> I think we can get rid of OrderedDict if you really want to.
>
No harm in keeping it right now either, it doesn't make typing harder.
The OrderedDict is created in the parser, so we can cover ditching
OrderedDict when we get to that module if desired.
--js
next prev parent reply other threads:[~2020-11-17 19:49 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-26 21:36 [PATCH v2 00/16] qapi: static typing conversion, pt3 John Snow
2020-10-26 21:36 ` [PATCH v2 01/16] qapi/expr.py: Remove 'info' argument from nested check_if_str John Snow
2020-10-26 21:36 ` [PATCH v2 02/16] qapi/expr.py: Check for dict instead of OrderedDict John Snow
2020-11-17 16:30 ` Markus Armbruster
2020-11-17 18:08 ` Eduardo Habkost
2020-11-17 19:48 ` John Snow [this message]
2020-10-26 21:36 ` [PATCH v2 03/16] qapi/expr.py: constrain incoming expression types John Snow
2020-11-18 14:58 ` Markus Armbruster
2020-10-26 21:36 ` [PATCH v2 04/16] qapi/expr.py: Add assertion for union type 'check_dict' John Snow
2020-11-18 15:30 ` Markus Armbruster
2020-10-26 21:36 ` [PATCH v2 05/16] qapi/expr.py: move string check upwards in check_type John Snow
2020-10-26 21:36 ` [PATCH v2 06/16] qapi/expr.py: Check type of 'data' member John Snow
2020-11-18 15:36 ` Markus Armbruster
2020-10-26 21:36 ` [PATCH v2 07/16] qapi/expr.py: Add casts in a few select cases John Snow
2020-11-18 15:41 ` Markus Armbruster
2020-10-26 21:36 ` [PATCH v2 08/16] qapi/expr.py: add type hint annotations John Snow
2020-10-26 21:36 ` [PATCH v2 09/16] qapi/expr.py: rewrite check_if John Snow
2020-10-26 21:36 ` [PATCH v2 10/16] qapi/expr.py: Remove single-letter variable John Snow
2020-10-26 21:36 ` [PATCH v2 11/16] qapi/expr.py: enable pylint checks John Snow
2020-10-26 21:36 ` [PATCH v2 12/16] qapi/expr.py: Add docstrings John Snow
2020-10-26 21:36 ` [PATCH v2 13/16] qapi/expr.py: Modify check_keys to accept any Iterable John Snow
2020-10-26 21:36 ` [PATCH v2 14/16] qapi/expr.py: Use tuples instead of lists for static data John Snow
2020-10-26 21:36 ` [PATCH v2 15/16] qapi/expr.py: move related checks inside check_xxx functions John Snow
2020-10-26 21:36 ` [PATCH v2 16/16] qapi/expr.py: Use an expression checker dispatch table John Snow
2020-11-04 0:41 ` [PATCH v2 00/16] qapi: static typing conversion, pt3 John Snow
2020-11-04 14:53 ` Marc-André Lureau
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=7d2324b2-11e4-3719-37fe-ba935c9f4e16@redhat.com \
--to=jsnow@redhat.com \
--cc=armbru@redhat.com \
--cc=crosa@redhat.com \
--cc=ehabkost@redhat.com \
--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 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).