[Python-checkins] r56247 - 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:59:30 CEST 2007


Author: brett.cannon
Date: Wed Jul 11 01:59:30 2007
New Revision: 56247

Modified:
   sandbox/trunk/import_in_py/_importlib.py
   sandbox/trunk/import_in_py/importlib.py
Log:
Remove os.path.(isfile | isdir) dependency.


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:59:30 2007
@@ -74,6 +74,23 @@
         return True
 
 
+def _path_is_mode_type(path, mode):
+    """Test whether the path is the specified mode type."""
+    try:
+        stat_info = posix.stat(path)
+    except OSError:
+        return False
+    return (stat_info.st_mode & 0170000) == mode
+
+def _path_isfile(path):
+    """Replacement for os.path.isfile."""
+    return _path_is_mode_type(path, 0100000)
+
+def _path_isdir(path):
+    """Replacement for os.path.isdir."""
+    return _path_is_mode_type(path, 0040000)
+
+
 class _BuiltinFrozenBaseImporter(object):
 
     """Base class for meta_path importers for built-in and frozen modules.
@@ -164,7 +181,7 @@
     
         """
         absolute_path = os.path.abspath(path_entry)
-        if os.path.isdir(absolute_path):
+        if _path_isdir(absolute_path):
             return FileSystemImporter(absolute_path, *self.handlers)
         else:
             raise ImportError("can only handle directories")
@@ -207,19 +224,19 @@
                 init_filename = '__init__' + file_ext
                 package_init = _path_join(package_directory, init_filename)
                 # Check if it is a package with an __init__ file.
-                if (os.path.isfile(package_init) and
+                if (_path_isfile(package_init) and
                         _case_ok(self.path_entry, tail_module) and
                         _case_ok(package_directory, init_filename)):
                     return self.loader(package_init, handler, package_directory)
                 # See if it is a module.
                 file_name = tail_module + file_ext
                 file_path = _path_join(self.path_entry, file_name)
-                if (os.path.isfile(file_path) and
+                if (_path_isfile(file_path) and
                         _case_ok(self.path_entry, file_name)):
                     return self.loader(file_path, handler)
         else:
             # Raise a warning if it matches a directory w/o an __init__ file.
-            if (os.path.isdir(package_directory) and
+            if (_path_isdir(package_directory) and
                     _case_ok(self.path_entry, tail_module)):
                 warnings.warn("Not importing directory %s: missing __init__.py"
                                     % package_directory,

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:59:30 2007
@@ -96,6 +96,7 @@
         return False
 
 
+
 # Required built-in modules.
 import imp, sys, marshal
 _importlib.imp = imp


More information about the Python-checkins mailing list