[Python-checkins] r50546 - in sandbox/branches/setuptools-0.6: EasyInstall.txt setuptools/command/easy_install.py

phillip.eby python-checkins at python.org
Mon Jul 10 23:30:13 CEST 2006


Author: phillip.eby
Date: Mon Jul 10 23:30:12 2006
New Revision: 50546

Modified:
   sandbox/branches/setuptools-0.6/EasyInstall.txt
   sandbox/branches/setuptools-0.6/setuptools/command/easy_install.py
Log:
Fix ``sys.path_importer_cache`` not being updated when an existing zipfile
or directory is deleted/overwritten.


Modified: sandbox/branches/setuptools-0.6/EasyInstall.txt
==============================================================================
--- sandbox/branches/setuptools-0.6/EasyInstall.txt	(original)
+++ sandbox/branches/setuptools-0.6/EasyInstall.txt	Mon Jul 10 23:30:12 2006
@@ -1101,6 +1101,9 @@
  * Fix ``ftp://`` directory listing URLs from causing a crash when used in the
    "Home page" or "Download URL" slots on PyPI.
 
+ * Fix ``sys.path_importer_cache`` not being updated when an existing zipfile
+   or directory is deleted/overwritten.
+
 0.6b3
  * Fix local ``--find-links`` eggs not being copied except with
    ``--always-copy``.

Modified: sandbox/branches/setuptools-0.6/setuptools/command/easy_install.py
==============================================================================
--- sandbox/branches/setuptools-0.6/setuptools/command/easy_install.py	(original)
+++ sandbox/branches/setuptools-0.6/setuptools/command/easy_install.py	Mon Jul 10 23:30:12 2006
@@ -1410,7 +1410,6 @@
             options = ' '+options
     return "#!%(executable)s%(options)s\n" % locals()
 
-
 def auto_chmod(func, arg, exc):
     if func is os.remove and os.name=='nt':
         os.chmod(arg, stat.S_IWRITE)
@@ -1418,21 +1417,22 @@
     exc = sys.exc_info()
     raise exc[0], (exc[1][0], exc[1][1] + (" %s %s" % (func,arg)))
 
-
 def uncache_zipdir(path):
-    """Ensure that the zip directory cache doesn't have stale info for path"""
+    """Ensure that the importer caches dont have stale info for `path`"""
     from zipimport import _zip_directory_cache as zdc
-    if path in zdc:
-        del zdc[path]
+    _uncache(path, zdc)
+    _uncache(path, sys.path_importer_cache)
+
+def _uncache(path, cache):
+    if path in cache:
+        del cache[path]
     else:
         path = normalize_path(path)
-        for p in zdc:
+        for p in cache:
             if normalize_path(p)==path:
-                del zdc[p]
+                del cache[p]
                 return
 
-
-
 def is_python(text, filename='<string>'):
     "Is this string a valid Python script?"
     try:


More information about the Python-checkins mailing list