[Python-checkins] cpython: Issue #27959: Prevent ImportError from escaping codec search function

steve.dower python-checkins at python.org
Wed Sep 7 12:32:17 EDT 2016


https://hg.python.org/cpython/rev/47b4dbd451f5
changeset:   103229:47b4dbd451f5
user:        Steve Dower <steve.dower at microsoft.com>
date:        Wed Sep 07 09:31:52 2016 -0700
summary:
  Issue #27959: Prevent ImportError from escaping codec search function

files:
  Lib/encodings/__init__.py |  12 ++++++++----
  Lib/test/test_io.py       |   3 +--
  2 files changed, 9 insertions(+), 6 deletions(-)


diff --git a/Lib/encodings/__init__.py b/Lib/encodings/__init__.py
--- a/Lib/encodings/__init__.py
+++ b/Lib/encodings/__init__.py
@@ -155,9 +155,13 @@
 
 if sys.platform == 'win32':
     def _alias_mbcs(encoding):
-        import _bootlocale
-        if encoding == _bootlocale.getpreferredencoding(False):
-            import encodings.mbcs
-            return encodings.mbcs.getregentry()
+        try:
+            import _bootlocale
+            if encoding == _bootlocale.getpreferredencoding(False):
+                import encodings.mbcs
+                return encodings.mbcs.getregentry()
+        except ImportError:
+            # Imports may fail while we are shutting down
+            pass
 
     codecs.register(_alias_mbcs)
diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py
--- a/Lib/test/test_io.py
+++ b/Lib/test/test_io.py
@@ -3230,8 +3230,7 @@
 
 class CTextIOWrapperTest(TextIOWrapperTest):
     io = io
-    shutdown_error = ("ImportError: sys.meta_path is None"
-        if os.name == "nt" else "RuntimeError: could not find io module state")
+    shutdown_error = "RuntimeError: could not find io module state"
 
     def test_initialization(self):
         r = self.BytesIO(b"\xc3\xa9\n\n")

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


More information about the Python-checkins mailing list