[Python-checkins] r57340 - sandbox/trunk/import_in_py/zipimport_/zipimport.py
brett.cannon
python-checkins at python.org
Thu Aug 23 22:21:16 CEST 2007
Author: brett.cannon
Date: Thu Aug 23 22:21:16 2007
New Revision: 57340
Modified:
sandbox/trunk/import_in_py/zipimport_/zipimport.py
Log:
Rewrite find_module to use imp for proper file suffix lookup.
Modified: sandbox/trunk/import_in_py/zipimport_/zipimport.py
==============================================================================
--- sandbox/trunk/import_in_py/zipimport_/zipimport.py (original)
+++ sandbox/trunk/import_in_py/zipimport_/zipimport.py Thu Aug 23 22:21:16 2007
@@ -1,6 +1,7 @@
"""A re-implementation of zipimport to use importlib."""
import importlib
+import imp
import os
import zipfile
@@ -29,15 +30,20 @@
"""Check if the specified module is contained within the zip file,
returning self if it is or None if it is not."""
path_name = fullname.replace('.', os.sep)
- # XXX Really should use imp.getprefixes().
- path_name_source = path_name + '.py'
- path_name_bytecode = path_name_source + ('c' if __debug__ else 'o')
- path_pkg_name_source = os.path.join(path_name, '__init__.py')
- path_pkg_name_bytecode = path_pkg_name_source + ('c' if __debug__ else 'o')
- for possible_name in (path_pkg_name_source, path_pkg_name_bytecode,
- path_name_bytecode, path_name_source):
+ suffixes = importlib.suffix_list(imp.PY_COMPILED)
+ suffixes += importlib.suffix_list(imp.PY_SOURCE)
+ for suffix in suffixes:
+ pkg_init_path = os.path.join(path_name, '__init__' + suffix)
try:
- self._zip.getinfo(possible_name)
+ self._zip.getinfo(pkg_init_path)
+ except KeyError:
+ continue
+ else:
+ return self
+ for suffix in suffixes:
+ file_path = path_name + suffix
+ try:
+ self._zip.getinfo(file_path)
except KeyError:
continue
else:
@@ -45,6 +51,7 @@
else:
return None
+
def get_code(self, fullname):
"""Return the code object for the module, raising ZipImportError if the
module is not found."""
More information about the Python-checkins
mailing list