--- a/mercurial/pycompat.py Mon Oct 10 05:31:31 2016 -0700
+++ b/mercurial/pycompat.py Mon Oct 10 23:11:15 2016 +0100
@@ -66,33 +66,15 @@
def sysstr(s):
return s
- # Partial backport from os.py in Python 3
- def _fscodec():
- encoding = sys.getfilesystemencoding()
- if encoding == 'mbcs':
- errors = 'strict'
+ # Partial backport from os.py in Python 3, which only accepts bytes.
+ # In Python 2, our paths should only ever be bytes, a unicode path
+ # indicates a bug.
+ def fsencode(filename):
+ if isinstance(filename, str):
+ return filename
else:
- errors = 'surrogateescape'
-
- def fsencode(filename):
- """
- Encode filename to the filesystem encoding with 'surrogateescape'
- error handler, return bytes unchanged. On Windows, use 'strict'
- error handler if the file system encoding is 'mbcs' (which is the
- default encoding).
- """
- if isinstance(filename, str):
- return filename
- elif isinstance(filename, unicode):
- return filename.encode(encoding, errors)
- else:
- raise TypeError(
- "expect str or unicode, not %s" % type(filename).__name__)
-
- return fsencode
-
- fsencode = _fscodec()
- del _fscodec
+ raise TypeError(
+ "expect str, not %s" % type(filename).__name__)
stringio = io.StringIO
empty = _queue.Empty