On 9/23/20 12:35 PM, Eduardo Habkost wrote:
I believe these two lines above should be removed, as suggested
in patch 30, but let's ignore that for now.


Yup, headed there.

-    if features:
-        obj['features'] = [(f.name, Extra(None, f.ifcond)) for f in features]
I can't say I understand completely why moving these two lines
outside _make_tree() is useful, but if it makes the cleanup work
you did easier, I trust this is the right thing to do.  The
changes look correct.

The basic premise is:

Why pass information you want to add to obj['features'] to a function to make that assignment, when you could just perform that assignment yourself?

Otherwise, _make_tree, which accepts any arbitrary object (not just dicts!) has to interrogate its arguments to make sure you gave it a dict when you give it a features argument.

Type-wise, it's cleaner to perform this transformation when we KNOW we have an object than it is to defer to a more abstracted function and assert/downcast back to more specific types.


Reply via email to