[Python-checkins] cpython (2.7): #11910: change import_fresh_module to return None when one of the "fresh"

ezio.melotti python-checkins at python.org
Mon May 9 05:28:57 CEST 2011


http://hg.python.org/cpython/rev/c1a12a308c5b
changeset:   69954:c1a12a308c5b
branch:      2.7
user:        Ezio Melotti <ezio.melotti at gmail.com>
date:        Mon May 09 06:28:42 2011 +0300
summary:
  #11910: change import_fresh_module to return None when one of the "fresh" modules can not be imported.

files:
  Lib/test/test_support.py |  12 ++++++++----
  1 files changed, 8 insertions(+), 4 deletions(-)


diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -84,12 +84,14 @@
 def _save_and_remove_module(name, orig_modules):
     """Helper function to save and remove a module from sys.modules
 
-       Return value is True if the module was in sys.modules and
-       False otherwise."""
+       Return True if the module was in sys.modules, False otherwise.
+       Raise ImportError if the module can't be imported."""
     saved = True
     try:
         orig_modules[name] = sys.modules[name]
     except KeyError:
+        # try to import the module and raise an error if it can't be imported
+        __import__(name)
         saved = False
     else:
         del sys.modules[name]
@@ -99,8 +101,7 @@
 def _save_and_block_module(name, orig_modules):
     """Helper function to save and block a module in sys.modules
 
-       Return value is True if the module was in sys.modules and
-       False otherwise."""
+       Return True if the module was in sys.modules, False otherwise."""
     saved = True
     try:
         orig_modules[name] = sys.modules[name]
@@ -116,6 +117,7 @@
     the sys.modules cache is restored to its original state.
 
     Modules named in fresh are also imported anew if needed by the import.
+    If one of these modules can't be imported, None is returned.
 
     Importing of modules named in blocked is prevented while the fresh import
     takes place.
@@ -137,6 +139,8 @@
                 if not _save_and_block_module(blocked_name, orig_modules):
                     names_to_remove.append(blocked_name)
             fresh_module = importlib.import_module(name)
+        except ImportError:
+            fresh_module = None
         finally:
             for orig_name, module in orig_modules.items():
                 sys.modules[orig_name] = module

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list