Troy Curtis Jr wrote on Sun, 11 Feb 2018 14:27 +0000:
> All this being said, I'm fine reverting the import swap if that is what is
> desired, as all indications are that it works either way now.  I simply
> liked the communication of intent better with this order.

I think the primary reason for the 'try: import py3name...' convention
is to make the code a little faster in the common case, which is
presumed to be the newer language version.  I'm not sure whether the
difference is significant enough to be worth the churn of another commit
unchanging the order.  It certainly isn't significant enough to block the
backport (the bugfix outweighs it by orders of magnitude).

I'm not sure I understand exactly in what way you see the order in HEAD
as better.  As I see it, the code wants to import the module that's
known as '__builtin__' on py2 and 'builtins' on py3 because it wants to
call <that module>.open(), an alias of the builtin open() function.  I
don't think the code should care whether "import builtins" succeeds
because it runs under py3 or under py2+future, so long as "import
builtins" results in locals()['builtins'] having the semantics it would
have under py3.  I view this as a form of duck typing.

This may be an academic question, of course; the important thing is that
the patch is committed so trunk now works with and without future
installed.

Cheers,

Daniel

Reply via email to