diff -r b85fa6bf298b -r c19266edd93e mercurial/__init__.py --- a/mercurial/__init__.py Sun Oct 09 17:02:34 2016 +0200 +++ b/mercurial/__init__.py Sun Oct 09 14:10:01 2016 +0200 @@ -305,6 +305,24 @@ except IndexError: pass + # Bare open call (not an attribute on something else) + if (fn == 'open' and not (prevtoken.type == token.OP and + prevtoken.string == '.')): + try: + # (NAME, 'open') + # (OP, '(') + # (NAME|STRING, 'filename') + # (OP, ',') + # (NAME|STRING, mode) + st = tokens[i + 4] + if (st.type == token.STRING and + st.string[0] in ("'", '"')): + rt = tokenize.TokenInfo(st.type, 'u%s' % st.string, + st.start, st.end, st.line) + tokens[i + 4] = rt + except IndexError: + pass + # It changes iteritems to items as iteritems is not # present in Python 3 world. if fn == 'iteritems': @@ -319,7 +337,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\x04' + BYTECODEHEADER = b'HG\x00\x05' class hgloader(importlib.machinery.SourceFileLoader): """Custom module loader that transforms source code.