Skip to content
Snippets Groups Projects
Commit 3018749a authored by Martin von Zweigbergk's avatar Martin von Zweigbergk
Browse files

py3: source-transform only call-sites of iteritems(), not definitions

branchmap.branchcache, among other classes, defines a
iteritems(). That currently gets replaced by items() by the source
transformer. That makes it harder for extensions to work with both py2
and py3, since they have to call either items() or iteritems() on
branchcache. Let's not replace definitions of iteritems() (and
itervalues()) and only replace the call-sites. We need to also add an
items() alias to branchcache (etc) so our transformer call-sites will
find it.

Differential Revision: https://phab.mercurial-scm.org/D6641
parent c7d236b5
No related branches found
No related tags found
No related merge requests found
......@@ -167,6 +167,8 @@
for k, vtup in self.potentialentries.iteritems():
yield (k, [bin(vtup[0])])
items = iteritems
class remotenames(object):
"""
This class encapsulates all the remotenames state. It also contains
......
......@@ -225,7 +225,9 @@
# It changes iteritems/values to items/values as they are not
# present in Python 3 world.
elif fn in ('iteritems', 'itervalues'):
elif (fn in ('iteritems', 'itervalues') and
not (tokens[i - 1].type == token.NAME and
tokens[i - 1].string == 'def')):
yield t._replace(string=fn[4:])
continue
......@@ -236,7 +238,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\x0b'
BYTECODEHEADER = b'HG\x00\x0c'
class hgloader(importlib.machinery.SourceFileLoader):
"""Custom module loader that transforms source code.
......
......@@ -218,6 +218,8 @@
self._verifybranch(k)
yield k, v
items = iteritems
def hasbranch(self, label):
""" checks whether a branch of this name exists or not """
self._verifybranch(label)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment