|
From: | John Snow |
Subject: | Re: [PATCH v4 06/14] qapi/introspect.py: replace 'extra' dict with 'comment' argument |
Date: | Wed, 3 Feb 2021 16:21:38 -0500 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 |
On 2/3/21 9:23 AM, Markus Armbruster wrote:
John Snow <jsnow@redhat.com> writes:This is only used to pass in a dictionary with a comment already set, so skip the runaround and just accept the comment. This works because _tree_to_qlit() treats 'if': None; 'comment': None exactly like absent 'if'; 'comment'.Confusing, because the two paragraphs talk about two different things: 1. Actual arguments for @extra are either None or {'comment': comment}. Simplify: replace parameter @extra by parameter @comment. 2. Dumb down the return value to always be of the form (obj {'if': ifcond, 'comment': comment})
I think you are drawing attention to the fact that 'if' and 'comment' are now always present in this dict instead of conditionally present.
(else, I have misread you. (I think you are missing a comma.))
I suspect splitting the patch is easier than crafting a clear commit message for the combined one.
I wouldn't have considered to break out such a small change into two even smaller changes, but as you are in charge here ... Okey Dokey.
(meta-tangent: [1])
Signed-off-by: John Snow <jsnow@redhat.com> --- scripts/qapi/introspect.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/scripts/qapi/introspect.py b/scripts/qapi/introspect.py index d3fbf694ad2..0aa3b77109f 100644 --- a/scripts/qapi/introspect.py +++ b/scripts/qapi/introspect.py @@ -10,6 +10,8 @@ See the COPYING file in the top-level directory. """+from typing import Optional+ from .common import ( c_name, gen_endif, @@ -24,11 +26,11 @@ )-def _make_tree(obj, ifcond, extra=None):- if extra is None: - extra = {} - if ifcond: - extra['if'] = ifcond +def _make_tree(obj, ifcond, comment=None): + extra = { + 'if': ifcond, + 'comment': comment, + } return (obj, extra)Obvious way to do just 1.: def _make_tree(obj, ifcond, comment=None): extra = {} if ifcond: extra['if'] = ifcond if comment: extra['comment'] = comment
OK.
@@ -174,18 +176,18 @@ def _gen_features(features):return [_make_tree(f.name, f.ifcond) for f in features]def _gen_tree(self, name, mtype, obj, ifcond, features):- extra = None + comment: Optional[str] = None if mtype not in ('command', 'event', 'builtin', 'array'): if not self._unmask: # Output a comment to make it easy to map masked names # back to the source when reading the generated output. - extra = {'comment': '"%s" = %s' % (self._name(name), name)} + comment = f'"{self._name(name)}" = {name}' name = self._name(name) obj['name'] = name obj['meta-type'] = mtype if features: obj['features'] = self._gen_features(features) - self._trees.append(_make_tree(obj, ifcond, extra)) + self._trees.append(_make_tree(obj, ifcond, comment))def _gen_member(self, member):obj = {'name': member.name, 'type': self._use_type(member.type)}
[1] As a matter of process, I sometimes find it cumbersome to intentionally engineer an intermediary state when I jumped straight from A->C in my actual editing.
I will usually keep such intermediary forms when they come about naturally in the course of development, but rarely seek to add them artificially -- it feels like a major bummer to engineer, test, and scrutinize code that's only bound to be deleted immediately after. Sometimes, it feels like a waste of reviewer effort, too.
It's been years and I still don't think I have any real intuitive sense for this, which is ...unfortunate.
--js
[Prev in Thread] | Current Thread | [Next in Thread] |