pycompat: allow pycompat.sysbytes() even if input already is bytes
pycompat.sysstr() on py3 accepts an input that's already str
(i.e. unicode). This patch makes it so pycompat.sysbytes() on py3
accepts an input that's already bytes. Allowing that makes it possible
to do pycompat.sysbytes(fp.name) where fp.name is either bytes or
unicode, as we'll get when fp can come from either open() or
resources.open_binary().
Differential Revision: https://phab.mercurial-scm.org/D7621
--- a/mercurial/pycompat.py Fri Dec 13 10:10:40 2019 -0800
+++ b/mercurial/pycompat.py Thu Dec 12 10:26:09 2019 -0800
@@ -253,6 +253,8 @@
This never raises UnicodeEncodeError, but only ASCII characters
can be round-trip by sysstr(sysbytes(s)).
"""
+ if isinstance(s, bytes):
+ return s
return s.encode('utf-8')
def sysstr(s):