[PATCH 3 of 3 RFC] mercurial: rewrite "iteritems" to "items"
timeless
timeless at gmail.com
Mon May 16 11:27:18 EDT 2016
>From my work I think we had some actual iteritems functions, I'd expect
this to do the wrong things for those cases.
On May 16, 2016 12:03 AM, "Gregory Szorc" <gregory.szorc at gmail.com> wrote:
> # HG changeset patch
> # User Gregory Szorc <gregory.szorc at gmail.com>
> # Date 1463371090 25200
> # Sun May 15 20:58:10 2016 -0700
> # Node ID 7e5fd80296fec5acd073b166b8c26d3b2ee3d01b
> # Parent effc44c0ec7440fabb134a076e974ca478d89e11
> mercurial: rewrite "iteritems" to "items"
>
> This is extremely hacky. We should probably verify the token
> before is an OP token with value ".". But it does result
> in not encountering an iteritems run-time failure!
>
> This change demonstrates we can pave over some Python 2/3
> differences using on-the-fly source transformations without
> "contaminating" the original source code to be Python 3
> aware.
>
> With this change, we fail on some attribute access in mail.py.
>
> diff --git a/mercurial/__init__.py b/mercurial/__init__.py
> --- a/mercurial/__init__.py
> +++ b/mercurial/__init__.py
> @@ -197,16 +197,23 @@ if sys.version_info[0] >= 3:
> return t
>
> if s[0] not in ("'", '"'):
> return t
>
> # String literal. Prefix to make a b'' string.
> return tokenize.TokenInfo(t.type, 'b%s' % s, t.start, t.end,
> t.line)
>
> + if t.type == token.NAME:
> + if t.string == 'iteritems':
> + return tokenize.TokenInfo(t.type, 'items', t.start, t.end,
> + t.line)
> +
> + return t
> +
> return t
>
> class hgloader(importlib.machinery.SourceFileLoader):
> """Custom module loader that transforms source code.
>
> When the source code is converted to code, we first transform
> string literals to byte literals using the tokenize API.
> """
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.mercurial-scm.org/pipermail/mercurial-devel/attachments/20160516/bd92abad/attachment.html>
More information about the Mercurial-devel
mailing list