py3: stop implicitly importing unicode
We should be pycompat.unicode everywhere. It turns out we were doing this
everywhere except for one place in templatefilters!
Differential Revision: https://phab.mercurial-scm.org/D7006
--- a/mercurial/__init__.py Sun Oct 06 13:28:56 2019 -0400
+++ b/mercurial/__init__.py Sun Oct 06 14:51:45 2019 -0400
@@ -171,8 +171,7 @@
r, c = t.start
l = (
b'; from mercurial.pycompat import '
- b'delattr, getattr, hasattr, setattr, '
- b'unicode\n'
+ b'delattr, getattr, hasattr, setattr\n'
)
for u in tokenize.tokenize(io.BytesIO(l).readline):
if u.type in (tokenize.ENCODING, token.ENDMARKER):
@@ -221,7 +220,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\x0d'
+ BYTECODEHEADER = b'HG\x00\x0e'
class hgloader(importlib.machinery.SourceFileLoader):
"""Custom module loader that transforms source code.
--- a/mercurial/templatefilters.py Sun Oct 06 13:28:56 2019 -0400
+++ b/mercurial/templatefilters.py Sun Oct 06 14:51:45 2019 -0400
@@ -367,7 +367,7 @@
"""Any text. Returns the input text rendered as a sequence of
XML entities.
"""
- text = unicode(text, pycompat.sysstr(encoding.encoding), r'replace')
+ text = pycompat.unicode(text, pycompat.sysstr(encoding.encoding), r'replace')
return b''.join([b'&#%d;' % ord(c) for c in text])