[pypy-commit] pypy stdlib-3.2.5: incoming paths are now unicode so their path manipulations should be too --

pjenvey noreply at buildbot.pypy.org
Wed Apr 9 22:15:19 CEST 2014


Author: Philip Jenvey <pjenvey at underboss.org>
Branch: stdlib-3.2.5
Changeset: r70521:8f1f8bf0c093
Date: 2014-04-09 12:23 -0700
http://bitbucket.org/pypy/pypy/changeset/8f1f8bf0c093/

Log:	incoming paths are now unicode so their path manipulations should be
	too -- however rpath doesn't support unicode, so fsencode them for
	now

diff --git a/pypy/module/sys/initpath.py b/pypy/module/sys/initpath.py
--- a/pypy/module/sys/initpath.py
+++ b/pypy/module/sys/initpath.py
@@ -107,7 +107,7 @@
 
     if state is not None:    # 'None' for testing only
         lib_extensions = os.path.join(lib_pypy, '__extensions__')
-        state.w_lib_extensions = state.space.wrap(lib_extensions)
+        state.w_lib_extensions = _w_fsdecode(state.space, lib_extensions)
         importlist.append(lib_extensions)
 
     importlist.append(lib_pypy)
@@ -137,22 +137,26 @@
         return None
 
 
- at unwrap_spec(executable='str0')
+ at unwrap_spec(executable='fsencode')
 def pypy_find_executable(space, executable):
-    return space.wrap(find_executable(executable))
+    return _w_fsdecode(space, find_executable(executable))
 
 
- at unwrap_spec(filename='str0')
+ at unwrap_spec(filename='fsencode')
 def pypy_resolvedirof(space, filename):
-    return space.wrap(resolvedirof(filename))
+    return _w_fsdecode(space, resolvedirof(filename))
 
 
- at unwrap_spec(executable='str0')
+ at unwrap_spec(executable='fsencode')
 def pypy_find_stdlib(space, executable):
     path, prefix = find_stdlib(get_state(space), executable)
     if path is None:
         return space.w_None
-    w_prefix = space.wrap(prefix)
+    w_prefix = _w_fsdecode(space, prefix)
     space.setitem(space.sys.w_dict, space.wrap('prefix'), w_prefix)
     space.setitem(space.sys.w_dict, space.wrap('exec_prefix'), w_prefix)
-    return space.newlist([space.wrap(p) for p in path])
+    return space.newlist([_w_fsdecode(space, p) for p in path])
+
+
+def _w_fsdecode(space, b):
+    return space.fsdecode(space.wrapbytes(b))


More information about the pypy-commit mailing list