changeset 30580:5ffbaba9acac

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.
author Pulkit Goyal <7895pulkit@gmail.com>
date Mon, 05 Dec 2016 06:46:51 +0530
parents f8c9a7d2bbbf
children 541949a10a68
files mercurial/extensions.py
diffstat 1 files changed, 2 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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)