# HG changeset patch # User Martin von Zweigbergk # Date 1562999664 25200 # Node ID 3018749a71bbde07bc7bd62223ef97f0be8ff1c5 # Parent c7d236b55a3ebc82b527d759cd41550e689b6e39 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 diff -r c7d236b55a3e -r 3018749a71bb hgext/remotenames.py --- a/hgext/remotenames.py Sun Jul 14 23:21:28 2019 -0700 +++ b/hgext/remotenames.py Fri Jul 12 23:34:24 2019 -0700 @@ -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 diff -r c7d236b55a3e -r 3018749a71bb mercurial/__init__.py --- a/mercurial/__init__.py Sun Jul 14 23:21:28 2019 -0700 +++ b/mercurial/__init__.py Fri Jul 12 23:34:24 2019 -0700 @@ -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. diff -r c7d236b55a3e -r 3018749a71bb mercurial/branchmap.py --- a/mercurial/branchmap.py Sun Jul 14 23:21:28 2019 -0700 +++ b/mercurial/branchmap.py Fri Jul 12 23:34:24 2019 -0700 @@ -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)