From patchwork Sun Oct 6 21:41:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D7011: py3: stop normalizing .encode()/.decode() arguments to unicode From: phabricator X-Patchwork-Id: 42054 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Sun, 6 Oct 2019 21:41:15 +0000 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 To: indygreg, #hg-reviewers Cc: mercurial-devel 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')