[pypy-svn] r70167 - in pypy/branch/import-builtin/pypy/module: __builtin__ zipimport zipimport/test

afa at codespeak.net afa at codespeak.net
Thu Dec 17 11:28:04 CET 2009


Author: afa
Date: Thu Dec 17 11:28:02 2009
New Revision: 70167

Modified:
   pypy/branch/import-builtin/pypy/module/__builtin__/__init__.py
   pypy/branch/import-builtin/pypy/module/zipimport/__init__.py
   pypy/branch/import-builtin/pypy/module/zipimport/test/test_zipimport.py
Log:
Have zipimport install itselfs in sys.path_hooks.
Ensure that this is done only once


Modified: pypy/branch/import-builtin/pypy/module/__builtin__/__init__.py
==============================================================================
--- pypy/branch/import-builtin/pypy/module/__builtin__/__init__.py	(original)
+++ pypy/branch/import-builtin/pypy/module/__builtin__/__init__.py	Thu Dec 17 11:28:02 2009
@@ -151,16 +151,3 @@
         space.exception_is_valid_obj_as_class_w = ab.exception_is_valid_obj_as_class_w.__get__(space)
         space.exception_getclass = ab.exception_getclass.__get__(space)
         space.exception_issubclass_w = ab.exception_issubclass_w.__get__(space)
-
-    def startup(self, space):
-        # install zipimport hook if --withmod-zipimport is used
-        if space.config.objspace.usemodules.zipimport:
-            w_import = space.builtin.get('__import__')
-            w_zipimport = space.call(w_import, space.newlist(
-                [space.wrap('zipimport')]))
-            w_sys = space.getbuiltinmodule('sys')
-            w_path_hooks = space.getattr(w_sys, space.wrap('path_hooks'))
-            w_append = space.getattr(w_path_hooks, space.wrap('append'))
-            w_zipimporter = space.getattr(w_zipimport,
-                                          space.wrap('zipimporter'))
-            space.call(w_append, space.newlist([w_zipimporter]))

Modified: pypy/branch/import-builtin/pypy/module/zipimport/__init__.py
==============================================================================
--- pypy/branch/import-builtin/pypy/module/zipimport/__init__.py	(original)
+++ pypy/branch/import-builtin/pypy/module/zipimport/__init__.py	Thu Dec 17 11:28:02 2009
@@ -14,4 +14,12 @@
     appleveldefs = {
         'ZipImportError'      : 'app_zipimport.ZipImportError',
     }
-    
+
+    def setup_after_space_initialization(self):
+        """NOT_RPYTHON"""
+        space = self.space
+        # install zipimport hook
+        w_path_hooks = space.sys.get('path_hooks')
+        from pypy.module.zipimport.interp_zipimport import W_ZipImporter
+        w_zipimporter = space.gettypefor(W_ZipImporter)
+        space.call_method(w_path_hooks, 'append', w_zipimporter)

Modified: pypy/branch/import-builtin/pypy/module/zipimport/test/test_zipimport.py
==============================================================================
--- pypy/branch/import-builtin/pypy/module/zipimport/test/test_zipimport.py	(original)
+++ pypy/branch/import-builtin/pypy/module/zipimport/test/test_zipimport.py	Thu Dec 17 11:28:02 2009
@@ -255,6 +255,11 @@
         l = [i for i in zipimport._zip_directory_cache]
         assert len(l)
 
+    def test_path_hooks(self):
+        import sys
+        import zipimport
+        assert sys.path_hooks.count(zipimport.zipimporter) == 1
+
 class AppTestZipimportDeflated(AppTestZipimport):
     compression = ZIP_DEFLATED
 



More information about the Pypy-commit mailing list