[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 02/16] qapi/expr.py: Check for dict instead of OrderedDict
From: |
Markus Armbruster |
Subject: |
Re: [PATCH v3 02/16] qapi/expr.py: Check for dict instead of OrderedDict |
Date: |
Wed, 24 Feb 2021 10:30:12 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) |
John Snow <jsnow@redhat.com> writes:
> OrderedDict is a subtype of dict, so we can check for a more general
> form. These functions do not themselves depend on it being any
> particular type.
True. The actual arguments can only be OrderedDict, though. I think we
refrained from relaxing to dict in these helpers because we felt
"staying ordered" is clearer.
We're *this* close to mooting the point, because
Changed in version 3.7: Dictionary order is guaranteed to be
insertion order. This behavior was an implementation detail of
CPython from 3.6.
https://docs.python.org/3.7/library/stdtypes.html
Is messing with it necessary for later work? If not, is it a worthwhile
improvement?
> 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 35695c4c653..5694c501fa3 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)
[PATCH v3 04/16] qapi/expr.py: Add assertion for union type 'check_dict', John Snow, 2021/02/22
[PATCH v3 03/16] qapi/expr.py: constrain incoming expression types, John Snow, 2021/02/22