[Python-checkins] r56246 - sandbox/trunk/import_in_py/_importlib.py sandbox/trunk/import_in_py/importlib.py

brett.cannon python-checkins at python.org
Wed Jul 11 01:48:48 CEST 2007


Author: brett.cannon
Date: Wed Jul 11 01:48:48 2007
New Revision: 56246

Modified:
   sandbox/trunk/import_in_py/_importlib.py
   sandbox/trunk/import_in_py/importlib.py
Log:
Rework importing of built-in modules.


Modified: sandbox/trunk/import_in_py/_importlib.py
==============================================================================
--- sandbox/trunk/import_in_py/_importlib.py	(original)
+++ sandbox/trunk/import_in_py/_importlib.py	Wed Jul 11 01:48:48 2007
@@ -58,12 +58,7 @@
 
 """
 from __future__ import with_statement
-
-# Built-in modules required by this module to work.
-# XXX posix can be named os2 or nt.
-# XXX posix guaranteed on all platforms (especially posix.stat)?
-_required_builtins = ['imp', 'sys', 'marshal', 'posix']
-
+# The injected modules are 'imp', 'sys', 'marshal', 'posix' (aka 'nt' & 'os2').
 
 def _path_join(*args):
     """Replacement for os.path.join so as to remove dependency on os module."""

Modified: sandbox/trunk/import_in_py/importlib.py
==============================================================================
--- sandbox/trunk/import_in_py/importlib.py	(original)
+++ sandbox/trunk/import_in_py/importlib.py	Wed Jul 11 01:48:48 2007
@@ -96,10 +96,22 @@
         return False
 
 
-# Import needed built-in modules.
-for builtin_name in _importlib._required_builtins:
-    module = __import__(builtin_name)
-    _importlib.__dict__[builtin_name] = module
+# Required built-in modules.
+import imp, sys, marshal
+_importlib.imp = imp
+_importlib.sys = sys
+_importlib.marshal = marshal
+try:
+    import posix
+except ImportError:
+    try:
+        import nt as posix
+    except ImportError:
+        try:
+            import os2 as posix
+        except ImportError:
+            raise ImportError('posix, nt, or os2 required for importlib')
+_importlib.posix = posix
 
 # XXX These all need to either go away or become built-in modules
 # (<cough>Neal</cough>).


More information about the Python-checkins mailing list