D7011: py3: stop normalizing .encode()/.decode() arguments to unicode
indygreg (Gregory Szorc)
phabricator at mercurial-scm.org
Sun Oct 6 21:41:15 UTC 2019
indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
Now that we don't byte transform string literals, we no longer need
this transform.
While we're here, we also drop some superfluous u'' prefix in existing
callers.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D7011
AFFECTED FILES
contrib/testparseutil.py
hgext/lfs/blobstore.py
mercurial/__init__.py
mercurial/pycompat.py
CHANGE DETAILS
diff --git a/mercurial/pycompat.py b/mercurial/pycompat.py
--- a/mercurial/pycompat.py
+++ b/mercurial/pycompat.py
@@ -206,7 +206,7 @@
) and not hasattr( # hasattr-py3-only
s, u'__bytes__'
):
- s = str(s).encode(u'ascii')
+ s = str(s).encode('ascii')
return bytes.__new__(cls, s)
def __getitem__(self, key):
@@ -237,7 +237,7 @@
This never raises UnicodeEncodeError, but only ASCII characters
can be round-trip by sysstr(sysbytes(s)).
"""
- return s.encode(u'utf-8')
+ return s.encode('utf-8')
def sysstr(s):
"""Return a keyword str to be passed to Python functions such as
@@ -249,18 +249,18 @@
"""
if isinstance(s, builtins.str):
return s
- return s.decode(u'latin-1')
+ return s.decode('latin-1')
def strurl(url):
"""Converts a bytes url back to str"""
if isinstance(url, bytes):
- return url.decode(u'ascii')
+ return url.decode('ascii')
return url
def bytesurl(url):
"""Converts a str url to bytes by encoding in ascii"""
if isinstance(url, str):
- return url.encode(u'ascii')
+ return url.encode('ascii')
return url
def raisewithtb(exc, tb):
diff --git a/mercurial/__init__.py b/mercurial/__init__.py
--- a/mercurial/__init__.py
+++ b/mercurial/__init__.py
@@ -166,14 +166,6 @@
if arg1idx is not None:
_ensureunicode(arg1idx)
- # .encode() and .decode() on str/bytes/unicode don't accept
- # byte strings on Python 3.
- elif fn in ('encode', 'decode') and _isop(i - 1, '.'):
- for argn in range(2):
- argidx = _findargnofcall(argn)
- if argidx is not None:
- _ensureunicode(argidx)
-
# It changes iteritems/values to items/values as they are not
# present in Python 3 world.
elif fn in ('iteritems', 'itervalues') and not (
@@ -190,7 +182,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\x12'
+ BYTECODEHEADER = b'HG\x00\x13'
class hgloader(importlib.machinery.SourceFileLoader):
"""Custom module loader that transforms source code.
diff --git a/hgext/lfs/blobstore.py b/hgext/lfs/blobstore.py
--- a/hgext/lfs/blobstore.py
+++ b/hgext/lfs/blobstore.py
@@ -394,7 +394,7 @@
def encodestr(x):
if isinstance(x, pycompat.unicode):
- return x.encode(u'utf-8')
+ return x.encode('utf-8')
return x
return pycompat.rapply(encodestr, response)
diff --git a/contrib/testparseutil.py b/contrib/testparseutil.py
--- a/contrib/testparseutil.py
+++ b/contrib/testparseutil.py
@@ -49,7 +49,7 @@
def sysstr(s):
if isinstance(s, builtins.str):
return s
- return s.decode(u'latin-1')
+ return s.decode('latin-1')
def opentext(f):
return open(f, 'r')
To: indygreg, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list