Mercurial > hg
diff mercurial/__init__.py @ 43104:74802979dd9d
py3: define and use pycompat.itervalues()
.itervalues() only exists on Python 2. Python 3's equivalent is
.values(). But we don't want to blindly use .values() everywhere
because on Python 2, it will create a list, which will have performance
implications.
This commit introduces pycompat.itervalues() which will call the appropriate
method on the passed object. We update all callers of obj.itervalues()
to pycompat.itervalues(obj) instead.
With this commit, the only source tranforming remaining is for
iteritems(). Victory is near...
Differential Revision: https://phab.mercurial-scm.org/D7013
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sun, 06 Oct 2019 17:59:15 -0400 |
parents | c95b2f40db7c |
children | 649d3ac37a12 |
line wrap: on
line diff
--- a/mercurial/__init__.py Sun Oct 06 17:45:05 2019 -0400 +++ b/mercurial/__init__.py Sun Oct 06 17:59:15 2019 -0400 @@ -117,7 +117,7 @@ # It changes iteritems/values to items/values as they are not # present in Python 3 world. - if fn in ('iteritems', 'itervalues') and not ( + if fn == 'iteritems' and not ( tokens[i - 1].type == token.NAME and tokens[i - 1].string == 'def' ): @@ -131,7 +131,7 @@ # ``replacetoken`` or any mechanism that changes semantics of module # loading is changed. Otherwise cached bytecode may get loaded without # the new transformation mechanisms applied. - BYTECODEHEADER = b'HG\x00\x14' + BYTECODEHEADER = b'HG\x00\x15' class hgloader(importlib.machinery.SourceFileLoader): """Custom module loader that transforms source code.