Author: Ronan Lamy <ronan.l...@gmail.com>
Branch: py3.5
Changeset: r93226:f1a556ffff93
Date: 2017-11-30 19:39 +0000
http://bitbucket.org/pypy/pypy/changeset/f1a556ffff93/

Log:    Module names inside a zip are not fsencoded - they can be any str

diff --git a/pypy/module/zipimport/interp_zipimport.py 
b/pypy/module/zipimport/interp_zipimport.py
--- a/pypy/module/zipimport/interp_zipimport.py
+++ b/pypy/module/zipimport/interp_zipimport.py
@@ -47,7 +47,7 @@
     # THIS IS A TERRIBLE HACK TO BE CPYTHON COMPATIBLE
 
     def getitem(self, space, w_name):
-        return self._getitem(space, space.fsencode_w(w_name))
+        return self._getitem(space, space.text_w(w_name))
 
     def _getitem(self, space, name):
         try:
@@ -90,14 +90,14 @@
     def iteritems(self, space):
         return space.iter(self.items(space))
 
-    @unwrap_spec(name='fsencode')
+    @unwrap_spec(name='text')
     def contains(self, space, name):
         return space.newbool(name in self.cache)
 
     def clear(self, space):
         self.cache = {}
 
-    @unwrap_spec(name='fsencode')
+    @unwrap_spec(name='text')
     def delitem(self, space, name):
         del self.cache[name]
 
@@ -221,7 +221,7 @@
         except KeyError:
             return False
 
-    @unwrap_spec(fullname='fsencode')
+    @unwrap_spec(fullname='text')
     def find_module(self, space, fullname, w_path=None):
         filename = self.make_filename(fullname)
         for _, _, ext in ENUMERATE_EXTS:
@@ -247,7 +247,7 @@
         return self.filename + os.path.sep + filename
 
     def load_module(self, space, w_fullname):
-        fullname = space.fsencode_w(w_fullname)
+        fullname = space.text_w(w_fullname)
         filename = self.make_filename(fullname)
         for compiled, is_package, ext in ENUMERATE_EXTS:
             fname = filename + ext
@@ -287,7 +287,7 @@
                     raise
         raise oefmt(get_error(space), "can't find module %R", w_fullname)
 
-    @unwrap_spec(filename='fsencode')
+    @unwrap_spec(filename='text')
     def get_data(self, space, filename):
         filename = self._find_relative_path(filename)
         try:
@@ -301,7 +301,7 @@
             raise zlib_error(space, e.msg)
 
     def get_code(self, space, w_fullname):
-        fullname = space.fsencode_w(w_fullname)
+        fullname = space.text_w(w_fullname)
         filename = self.make_filename(fullname)
         for compiled, _, ext in ENUMERATE_EXTS:
             if self.have_modulefile(space, filename + ext):
@@ -325,7 +325,7 @@
                     "Cannot find source or code for %R in %R",
                     w_fullname, space.newfilename(self.name))
 
-    @unwrap_spec(fullname='fsencode')
+    @unwrap_spec(fullname='text')
     def get_source(self, space, fullname):
         filename = self.make_filename(fullname)
         found = False
@@ -348,7 +348,7 @@
                     space.newfilename(self.name))
 
     def get_filename(self, space, w_fullname):
-        fullname = space.fsencode_w(w_fullname)
+        fullname = space.text_w(w_fullname)
         filename = self.make_filename(fullname)
         for _, is_package, ext in ENUMERATE_EXTS:
             if self.have_modulefile(space, filename + ext):
@@ -360,7 +360,7 @@
                     space.newfilename(self.name))
 
     def is_package(self, space, w_fullname):
-        fullname = space.fsencode_w(w_fullname)
+        fullname = space.text_w(w_fullname)
         filename = self.make_filename(fullname)
         for _, is_package, ext in ENUMERATE_EXTS:
             if self.have_modulefile(space, filename + ext):
@@ -385,7 +385,7 @@
             return True, self.filename + os.path.sep + self.corr_zname(dirpath)
         return False, None
 
-    @unwrap_spec(fullname='fsencode')
+    @unwrap_spec(fullname='text')
     def find_loader(self, space, fullname, w_path=None):
         found, ns_portion = self._find_loader(space, fullname)
         if not found:
@@ -401,9 +401,9 @@
     name = space.fsencode_w(w_name)
     ok = False
     parts_ends = [i for i in range(0, len(name))
-                    if name[i] == os.path.sep or name[i] == ZIPSEP]
+            if name[i] == os.path.sep or name[i] == ZIPSEP]
     parts_ends.append(len(name))
-    filename = "" # make annotator happy
+    filename = ""  # make annotator happy
     for i in parts_ends:
         filename = name[:i]
         if not filename:
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to