[pypy-svn] r70091 - pypy/branch/import-builtin/pypy/module/imp

afa at codespeak.net afa at codespeak.net
Mon Dec 14 13:39:04 CET 2009


Author: afa
Date: Mon Dec 14 13:39:03 2009
New Revision: 70091

Modified:
   pypy/branch/import-builtin/pypy/module/imp/importing.py
   pypy/branch/import-builtin/pypy/module/imp/interp_imp.py
Log:
Don't use sys.path when loading a submodule


Modified: pypy/branch/import-builtin/pypy/module/imp/importing.py
==============================================================================
--- pypy/branch/import-builtin/pypy/module/imp/importing.py	(original)
+++ pypy/branch/import-builtin/pypy/module/imp/importing.py	Mon Dec 14 13:39:03 2009
@@ -185,9 +185,7 @@
     w_mod = None
     parts = modulename.split('.')
     prefix = []
-    # it would be nice if we could do here: w_path = space.sys.w_path
-    # instead:
-    w_path = space.sys.get('path') 
+    w_path = None
 
     first = None
     level = 0
@@ -222,6 +220,8 @@
 
 def find_in_meta_path(space, w_modulename, w_path):
     assert w_modulename is not None
+    if w_path is None:
+        w_path = space.w_None
     for w_hook in space.unpackiterable(space.sys.get("meta_path")):
         w_loader = space.call_method(w_hook, "find_module",
                                      w_modulename, w_path)
@@ -276,9 +276,11 @@
     # XXX Check for frozen modules?
     #     when w_path is a string
 
-    # check the builtin modules
-    if modulename in space.builtin_modules:
-        return FindInfo(C_BUILTIN, modulename, None)
+    if w_path is None:
+        # check the builtin modules
+        if modulename in space.builtin_modules:
+            return FindInfo(C_BUILTIN, modulename, None)
+        w_path = space.sys.get('path')
 
     # XXX check frozen modules?
     #     when w_path is null
@@ -381,10 +383,11 @@
     modulename = '.'.join(prefix + [partname])
     w_modulename = w(modulename)
     w_mod = check_sys_modules(space, w_modulename)
+
     if w_mod is not None:
         if not space.is_w(w_mod, space.w_None):
             return w_mod
-    else:
+    elif not prefix or w_path is not None:
         find_info = find_module(
             space, modulename, w_modulename, partname, w_path)
 
@@ -433,9 +436,9 @@
                 space.w_ImportError,
                 space.wrap("reload(): parent %s not in sys.modules" % (
                     parent_name,)))
-        w_path = space.getitem(w_parent, space.wrap("__path"))
+        w_path = space.getitem(w_parent, space.wrap("__path__"))
     else:
-        w_path = space.sys.get('path')
+        w_path = None
 
     find_info = find_module(
         space, modulename, w_modulename, subname, w_path)
@@ -448,7 +451,8 @@
     try:
         return load_module(space, w_modulename, find_info, reuse=True)
     finally:
-        find_info.stream.close()
+        if find_info.stream:
+            find_info.stream.close()
 
 
 # __________________________________________________________________

Modified: pypy/branch/import-builtin/pypy/module/imp/interp_imp.py
==============================================================================
--- pypy/branch/import-builtin/pypy/module/imp/interp_imp.py	(original)
+++ pypy/branch/import-builtin/pypy/module/imp/interp_imp.py	Mon Dec 14 13:39:03 2009
@@ -33,7 +33,7 @@
 def find_module(space, w_name, w_path=None):
     name = space.str_w(w_name)
     if space.is_w(w_path, space.w_None):
-        w_path = space.sys.get('path')
+        w_path = None
 
     find_info = importing.find_module(
         space, name, w_name, name, w_path, use_loader=False)



More information about the Pypy-commit mailing list