diff --git a/hgext/win32mbcs.py b/hgext/win32mbcs.py --- a/hgext/win32mbcs.py +++ b/hgext/win32mbcs.py @@ -82,7 +82,7 @@ def decode(arg): uarg = arg.decode(_encoding) if arg == uarg.encode(_encoding): return uarg - raise UnicodeError(b"Not local encoding") + raise UnicodeError("Not local encoding") elif isinstance(arg, tuple): return tuple(map(decode, arg)) elif isinstance(arg, list): @@ -111,8 +111,8 @@ def appendsep(s): try: us = decode(s) except UnicodeError: - us = s - if us and us[-1] not in b':/\\': + us = s # TODO: how to handle this bytes case?? + if us and us[-1] not in ':/\\': s += pycompat.ossep return s @@ -148,13 +148,13 @@ def wrapperforlistdir(func, args, kwds): if args: args = list(args) args[0] = appendsep(args[0]) - if b'path' in kwds: - kwds[b'path'] = appendsep(kwds[b'path']) + if 'path' in kwds: + kwds['path'] = appendsep(kwds['path']) return func(*args, **kwds) -def wrapname(name, wrapper): - module, name = name.rsplit(b'.', 1) +def wrapname(name: str, wrapper): + module, name = name.rsplit('.', 1) module = sys.modules[module] func = getattr(module, name) @@ -168,7 +168,7 @@ def wrapname(name, wrapper): # List of functions to be wrapped. # NOTE: os.path.dirname() and os.path.basename() are safe because # they use result of os.path.split() -funcs = b'''os.path.join os.path.split os.path.splitext +funcs = '''os.path.join os.path.split os.path.splitext os.path.normpath os.makedirs mercurial.util.endswithsep mercurial.util.splitpath mercurial.util.fscasesensitive mercurial.util.fspath mercurial.util.pconvert mercurial.util.normpath @@ -178,11 +178,11 @@ funcs = b'''os.path.join os.path.split o # These functions are required to be called with local encoded string # because they expects argument is local encoded string and cause # problem with unicode string. -rfuncs = b'''mercurial.encoding.upper mercurial.encoding.lower +rfuncs = '''mercurial.encoding.upper mercurial.encoding.lower mercurial.util._filenamebytestr''' # List of Windows specific functions to be wrapped. -winfuncs = b'''os.path.splitunc''' +winfuncs = '''os.path.splitunc''' # codec and alias names of sjis and big5 to be faked. problematic_encodings = b'''big5 big5-tw csbig5 big5hkscs big5-hkscs @@ -208,15 +208,15 @@ def extsetup(ui): if pycompat.iswindows: for f in winfuncs.split(): wrapname(f, wrapper) - wrapname(b"mercurial.util.listdir", wrapperforlistdir) - wrapname(b"mercurial.windows.listdir", wrapperforlistdir) + wrapname("mercurial.util.listdir", wrapperforlistdir) + wrapname("mercurial.windows.listdir", wrapperforlistdir) # wrap functions to be called with local byte string arguments for f in rfuncs.split(): wrapname(f, reversewrapper) # Check sys.args manually instead of using ui.debug() because # command line options is not yet applied when # extensions.loadall() is called. - if b'--debug' in sys.argv: + if '--debug' in sys.argv: ui.writenoi18n( b"[win32mbcs] activated with encoding: %s\n" % _encoding )