# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 1480900611 -19800 # Node ID 5ffbaba9acac15c7eab48c0c6b5b1743e54dc61c # Parent f8c9a7d2bbbf5e290d7d4e3a3efe70bb90a7bd47 py3: use pycompat.fsdecode() to pass to imp.* functions When we try to pass a bytes argument to a function from imp library, it returns TypeError as it deals with unicodes internally. So we can't use bytes with imp.* functions. Hunting through this, I found we were returning bytes path variable to loadpath() on Python 3.5 (yes most of our codebase is dealing with bytes on Python 3 especially the path variables). Passing unicode does not fails the purpose of loding the extensions and a module object is returned. diff -r f8c9a7d2bbbf -r 5ffbaba9acac mercurial/extensions.py --- a/mercurial/extensions.py Tue Dec 06 17:06:39 2016 +0000 +++ b/mercurial/extensions.py Mon Dec 05 06:46:51 2016 +0530 @@ -60,6 +60,8 @@ def loadpath(path, module_name): module_name = module_name.replace('.', '_') path = util.normpath(util.expandpath(path)) + module_name = pycompat.fsdecode(module_name) + path = pycompat.fsdecode(path) if os.path.isdir(path): # module/__init__.py style d, f = os.path.split(path)