]> granicus.if.org Git - python/commitdiff
Issue #18200: Update the stdlib (except tests) to use
authorBrett Cannon <brett@python.org>
Fri, 14 Jun 2013 00:57:26 +0000 (20:57 -0400)
committerBrett Cannon <brett@python.org>
Fri, 14 Jun 2013 00:57:26 +0000 (20:57 -0400)
ModuleNotFoundError.

83 files changed:
Lib/_dummy_thread.py
Lib/_osx_support.py
Lib/_pyio.py
Lib/_strptime.py
Lib/bisect.py
Lib/bz2.py
Lib/cmd.py
Lib/code.py
Lib/collections/__init__.py
Lib/copy.py
Lib/datetime.py
Lib/decimal.py
Lib/distutils/archive_util.py
Lib/distutils/ccompiler.py
Lib/distutils/dist.py
Lib/distutils/msvccompiler.py
Lib/distutils/util.py
Lib/encodings/__init__.py
Lib/ftplib.py
Lib/functools.py
Lib/getopt.py
Lib/getpass.py
Lib/hashlib.py
Lib/heapq.py
Lib/http/client.py
Lib/http/cookiejar.py
Lib/http/server.py
Lib/imaplib.py
Lib/imp.py
Lib/importlib/__init__.py
Lib/importlib/abc.py
Lib/inspect.py
Lib/json/decoder.py
Lib/json/encoder.py
Lib/json/scanner.py
Lib/lib2to3/refactor.py
Lib/locale.py
Lib/logging/__init__.py
Lib/logging/config.py
Lib/logging/handlers.py
Lib/macpath.py
Lib/mailbox.py
Lib/mimetypes.py
Lib/multiprocessing/connection.py
Lib/multiprocessing/forking.py
Lib/nntplib.py
Lib/ntpath.py
Lib/operator.py
Lib/optparse.py
Lib/os.py
Lib/pdb.py
Lib/pickle.py
Lib/platform.py
Lib/poplib.py
Lib/pstats.py
Lib/pty.py
Lib/pydoc.py
Lib/queue.py
Lib/quopri.py
Lib/reprlib.py
Lib/rlcompleter.py
Lib/sched.py
Lib/shutil.py
Lib/site.py
Lib/smtpd.py
Lib/smtplib.py
Lib/socket.py
Lib/socketserver.py
Lib/sqlite3/test/dbapi.py
Lib/sqlite3/test/types.py
Lib/sre_compile.py
Lib/ssl.py
Lib/subprocess.py
Lib/tarfile.py
Lib/tempfile.py
Lib/threading.py
Lib/trace.py
Lib/urllib/request.py
Lib/venv/__init__.py
Lib/warnings.py
Lib/xml/etree/ElementTree.py
Lib/xml/sax/expatreader.py
Lib/xmlrpc/client.py

index 13b1f26965a201019ab3ccf91e7a6da2fb51ee8f..4909d1846a0006439edc7f6d0bb2619bde6404f4 100644 (file)
@@ -7,7 +7,7 @@ Suggested usage is::
 
     try:
         import _thread
-    except ImportError:
+    except ModuleNotFoundError:
         import _dummy_thread as _thread
 
 """
index 8412e45b701c8308c6fd527edd5594fd5ccaf6e0..19ee3e2e4000f6605188003e86eb3ae94424cc66 100644 (file)
@@ -62,7 +62,7 @@ def _read_output(commandstring):
     try:
         import tempfile
         fp = tempfile.NamedTemporaryFile()
-    except ImportError:
+    except ModuleNotFoundError:
         fp = open("/tmp/_osx_support.%s"%(
             os.getpid(),), "w+b")
 
index 137ebcbd82c31fdcb304388314ea3c99324caab2..79e6df25e18b400137a6de329aa0f5380fd34880 100644 (file)
@@ -9,7 +9,7 @@ import errno
 # Import _thread instead of threading to reduce startup cost
 try:
     from _thread import allocate_lock as Lock
-except ImportError:
+except ModuleNotFoundError:
     from _dummy_thread import allocate_lock as Lock
 
 import io
@@ -1486,7 +1486,7 @@ class TextIOWrapper(TextIOBase):
             if encoding is None:
                 try:
                     import locale
-                except ImportError:
+                except ModuleNotFoundError:
                     # Importing locale may fail if Python is being built
                     encoding = "ascii"
                 else:
index 7520919806659f7a2da3f590250f6729ffcd53d8..7724d87ddc04262463fc55bfe4538c691a2a904c 100644 (file)
@@ -21,7 +21,7 @@ from datetime import (date as datetime_date,
                       timezone as datetime_timezone)
 try:
     from _thread import allocate_lock as _thread_allocate_lock
-except ImportError:
+except ModuleNotFoundError:
     from _dummy_thread import allocate_lock as _thread_allocate_lock
 
 __all__ = []
index 4a4d05255e5810d5f918cd2176f915046d25e672..7808651a1aa368a03f87ad4d6e254acc4c42985b 100644 (file)
@@ -88,5 +88,5 @@ def bisect_left(a, x, lo=0, hi=None):
 # Overwrite above definitions with a fast C implementation
 try:
     from _bisect import *
-except ImportError:
+except ModuleNotFoundError:
     pass
index 6e6a2b99487d96b21ee562156e5ccaf2e10d06c0..f42045f2aa6df16ba09d435bde5a903d8c68813d 100644 (file)
@@ -14,7 +14,7 @@ import warnings
 
 try:
     from threading import RLock
-except ImportError:
+except ModuleNotFoundError:
     from dummy_threading import RLock
 
 from _bz2 import BZ2Compressor, BZ2Decompressor
index 859e91096d8f57d906c00023ef1a1c0e663178d6..58ee5f5f41fd0bcf3a5f440f46f7c1893ae0a9d6 100644 (file)
@@ -109,7 +109,7 @@ class Cmd:
                 self.old_completer = readline.get_completer()
                 readline.set_completer(self.complete)
                 readline.parse_and_bind(self.completekey+": complete")
-            except ImportError:
+            except ModuleNotFoundError:
                 pass
         try:
             if intro is not None:
@@ -143,7 +143,7 @@ class Cmd:
                 try:
                     import readline
                     readline.set_completer(self.old_completer)
-                except ImportError:
+                except ModuleNotFoundError:
                     pass
 
 
index 9020aab70163a8d684f08aeffeb56d44df79d2c2..a1ac90421cabb3b3355eb8fb4096f658a0effa56 100644 (file)
@@ -293,7 +293,7 @@ def interact(banner=None, readfunc=None, local=None):
     else:
         try:
             import readline
-        except ImportError:
+        except ModuleNotFoundError:
             pass
     console.interact(banner)
 
index e1a075c7585a2585b763ee6760e9857b3f14beaa..a8ad916981175c06229915b7692cf1d8c69a1320 100644 (file)
@@ -395,7 +395,7 @@ def _count_elements(mapping, iterable):
 
 try:                                    # Load C helper function if available
     from _collections import _count_elements
-except ImportError:
+except ModuleNotFoundError:
     pass
 
 class Counter(dict):
index d96201ea98eaf66ffc89de6927dd9f1d082ab94f..2fbffa1f9387cbbaec9ae1a1501794eace81cfb3 100644 (file)
@@ -59,7 +59,7 @@ error = Error   # backward compatibility
 
 try:
     from org.python.core import PyStringMap
-except ImportError:
+except ModuleNotFoundError:
     PyStringMap = None
 
 __all__ = ["Error", "copy", "deepcopy"]
index bc1486c91953e696b59da444595a414f72e887ff..2883418cc1345b6ed80dd9e35c47809bca3043d8 100644 (file)
@@ -2116,7 +2116,7 @@ _EPOCH = datetime(1970, 1, 1, tzinfo=timezone.utc)
 
 try:
     from _datetime import *
-except ImportError:
+except ModuleNotFoundError:
     pass
 else:
     # Clean up unused names
index d39ac1da749026cf05b21701326f093971489ff8..6c3e19e2cbde292bafeab944fb85953d8fd389d6 100644 (file)
@@ -149,7 +149,7 @@ import sys
 try:
     from collections import namedtuple as _namedtuple
     DecimalTuple = _namedtuple('DecimalTuple', 'sign digits exponent')
-except ImportError:
+except ModuleNotFoundError:
     DecimalTuple = lambda *args: args
 
 # Rounding
@@ -430,7 +430,7 @@ _rounding_modes = (ROUND_DOWN, ROUND_HALF_UP, ROUND_HALF_EVEN, ROUND_CEILING,
 
 try:
     import threading
-except ImportError:
+except ModuleNotFoundError:
     # Python was compiled without threads; create a mock object instead
     class MockThreading(object):
         def local(self, sys=sys):
@@ -6147,7 +6147,7 @@ del re
 # don't care too much if locale isn't present.
 try:
     import locale as _locale
-except ImportError:
+except ModuleNotFoundError:
     pass
 
 def _parse_format_specifier(format_spec, _localeconv=None):
@@ -6391,7 +6391,7 @@ del sys
 
 try:
     import _decimal
-except ImportError:
+except ModuleNotFoundError:
     pass
 else:
     s1 = set(dir())
index fcda08e20a2740a8702bf97a4f58ec8856781f98..ba74045dc08af4536bfe5f4d3884761c20cc5692 100644 (file)
@@ -9,7 +9,7 @@ import sys
 
 try:
     import zipfile
-except ImportError:
+except ModuleNotFoundError:
     zipfile = None
 
 
index 911e84dd3b3f2ea8e848bd84602284be522e9744..bc183fc5d1318200435af87045b982e42e5acdee 100644 (file)
@@ -3,7 +3,7 @@
 Contains CCompiler, an abstract base class that defines the interface
 for the Distutils compiler abstraction model."""
 
-import sys, os, re
+import importlib, sys, os, re
 from distutils.errors import *
 from distutils.spawn import spawn
 from distutils.file_util import move_file
@@ -1013,10 +1013,9 @@ def new_compiler(plat=None, compiler=None, verbose=0, dry_run=0, force=0):
 
     try:
         module_name = "distutils." + module_name
-        __import__ (module_name)
-        module = sys.modules[module_name]
+        module = importlib.import_module(module_name)
         klass = vars(module)[class_name]
-    except ImportError:
+    except ModuleNotFoundError:
         raise DistutilsModuleError(
               "can't compile C/C++ code: unable to load module '%s'" % \
               module_name)
index f7fac08918b6d8b252fb59487f4eac664dca1a6c..11f6ff8fbcee2d8c305f46fe92f29fac778aa6b5 100644 (file)
@@ -4,11 +4,11 @@ Provides the Distribution class, which represents the module distribution
 being built/installed/distributed.
 """
 
-import sys, os, re
+import importlib, sys, os, re
 
 try:
     import warnings
-except ImportError:
+except ModuleNotFoundError:
     warnings = None
 
 from distutils.errors import *
@@ -788,9 +788,8 @@ Common commands: (see '--help-commands' for more)
             klass_name = command
 
             try:
-                __import__ (module_name)
-                module = sys.modules[module_name]
-            except ImportError:
+                module = importlib.import_module(module_name)
+            except ModuleNotFoundError:
                 continue
 
             try:
index 81166569619b6fca7d0afcb8860c8bf78ea56fb9..9a94b41ad6b72944771ed0d6ede4f6c7f6ab1591 100644 (file)
@@ -28,7 +28,7 @@ try:
     RegEnumValue = winreg.EnumValue
     RegError = winreg.error
 
-except ImportError:
+except ModuleNotFoundError:
     try:
         import win32api
         import win32con
@@ -39,7 +39,7 @@ except ImportError:
         RegEnumKey = win32api.RegEnumKey
         RegEnumValue = win32api.RegEnumValue
         RegError = win32api.error
-    except ImportError:
+    except ModuleNotFoundError:
         log.info("Warning: Can't read registry to find the "
                  "necessary compiler setting\n"
                  "Make sure that Python modules winreg, "
index a2f9544519adfa3ef472694963cd12f4c1108c3b..e241f59b94626cbb283ed539a78d5f19b40207bf 100644 (file)
@@ -388,7 +388,7 @@ def byte_compile (py_files,
         try:
             from tempfile import mkstemp
             (script_fd, script_name) = mkstemp(".py")
-        except ImportError:
+        except ModuleNotFoundError:
             from tempfile import mktemp
             (script_fd, script_name) = None, mktemp(".py")
         log.info("writing byte-compilation script '%s'", script_name)
index 8dd713056ef056276782c4a7e899e80738f0eead..10d881dd018ccdd8a2afd81fba4bf234f8b66905 100644 (file)
@@ -29,11 +29,11 @@ Written by Marc-Andre Lemburg (mal@lemburg.com).
 """#"
 
 import codecs
+import importlib
 from . import aliases
 
 _cache = {}
 _unknown = '--unknown--'
-_import_tail = ['*']
 _aliases = aliases.aliases
 
 class CodecRegistryError(LookupError, SystemError):
@@ -94,9 +94,8 @@ def search_function(encoding):
         try:
             # Import is absolute to prevent the possibly malicious import of a
             # module with side-effects that is not in the 'encodings' package.
-            mod = __import__('encodings.' + modname, fromlist=_import_tail,
-                             level=0)
-        except ImportError:
+            mod = importlib.import_module('encodings.' + modname)
+        except ModuleNotFoundError:
             pass
         else:
             break
index fcd4b148c32b39166fab493fa48054fbf8331397..bd24a9e9d2c8d4fd8444aa6a0c732b23f946073e 100644 (file)
@@ -667,7 +667,7 @@ class FTP:
 
 try:
     import ssl
-except ImportError:
+except ModuleNotFoundError:
     _SSLSocket = None
 else:
     _SSLSocket = ssl.SSLSocket
index 67af370d016367fb88f4962850dd05b583b9bef7..9403e8e84320b646171672d2b084bd6babe58377 100644 (file)
@@ -15,7 +15,7 @@ __all__ = ['update_wrapper', 'wraps', 'WRAPPER_ASSIGNMENTS', 'WRAPPER_UPDATES',
 
 try:
     from _functools import reduce
-except ImportError:
+except ModuleNotFoundError:
     pass
 from abc import get_cache_token
 from collections import namedtuple
@@ -143,7 +143,7 @@ def cmp_to_key(mycmp):
 
 try:
     from _functools import cmp_to_key
-except ImportError:
+except ModuleNotFoundError:
     pass
 
 
@@ -166,7 +166,7 @@ def partial(func, *args, **keywords):
 
 try:
     from _functools import partial
-except ImportError:
+except ModuleNotFoundError:
     pass
 
 
index 3d6ecbddb99cd752ed027c589ee79db0527201bf..9c59dd771e8eeff85d2ccbaa2502b2497983ff25 100644 (file)
@@ -36,7 +36,7 @@ __all__ = ["GetoptError","error","getopt","gnu_getopt"]
 import os
 try:
     from gettext import gettext as _
-except ImportError:
+except ModuleNotFoundError:
     # Bootstrapping Python: gettext's dependencies not built yet
     def _(s): return s
 
index 6ec6c78824b784619835f97e84ae34fc7af83687..ed9bc5901df6d82704b2c8c93769134313191db0 100644 (file)
@@ -164,7 +164,7 @@ try:
 except (ImportError, AttributeError):
     try:
         import msvcrt
-    except ImportError:
+    except ModuleNotFoundError:
         getpass = fallback_getpass
     else:
         getpass = win_getpass
index a1bd8b2de8c037fbbbf2e943a88d6f75a9c5403f..c9ef4c9af3a81402f7fb12cae45dc0a8c190af70 100644 (file)
@@ -98,7 +98,7 @@ def __get_builtin_constructor(name):
                 return _sha3.sha3_384
             elif bs == '512':
                 return _sha3.sha3_512
-    except ImportError:
+    except ModuleNotFoundError:
         pass  # no extension module, this hash is unsupported.
 
     raise ValueError('unsupported hash type ' + name)
@@ -143,7 +143,7 @@ try:
     __get_hash = __get_openssl_constructor
     algorithms_available = algorithms_available.union(
             _hashlib.openssl_md_meth_names)
-except ImportError:
+except ModuleNotFoundError:
     new = __py_new
     __get_hash = __get_builtin_constructor
 
index 00b429c2d36ea41ac4a234556126a80555a8f038..dfe7a48aa7b363f7315c3fa6f2e46cd29383d614 100644 (file)
@@ -343,7 +343,7 @@ def _siftup_max(heap, pos):
 # If available, use C implementation
 try:
     from _heapq import *
-except ImportError:
+except ModuleNotFoundError:
     pass
 
 def merge(*iterables):
index 939615b2fb4a02c057ba91368dc2ca4c500dc71a..188f4f60faec6d6d90e7a1b5f4be53ee536023e2 100644 (file)
@@ -1156,7 +1156,7 @@ class HTTPConnection:
 
 try:
     import ssl
-except ImportError:
+except ModuleNotFoundError:
     pass
 else:
     class HTTPSConnection(HTTPConnection):
index be828eba6987d5828adf51950aa4fb7e4f5e6909..fd40ee04a7438b631df207266516f42ae24c9c22 100644 (file)
@@ -35,7 +35,7 @@ import time
 import urllib.parse, urllib.request
 try:
     import threading as _threading
-except ImportError:
+except ModuleNotFoundError:
     import dummy_threading as _threading
 import http.client  # only for the default HTTP port
 from calendar import timegm
index e47e034feb92b80e2d86189fde1b9e5cbccef015..48e3f9745aa16ce479382afa8c98ae20eb03317a 100644 (file)
@@ -904,7 +904,7 @@ def nobody_uid():
         return nobody
     try:
         import pwd
-    except ImportError:
+    except ModuleNotFoundError:
         return -1
     try:
         nobody = pwd.getpwnam('nobody')[2]
index c959f12da0963396ca6cbd1855fcd30412efefc8..30f51da9b44ed74740211ffb5cd015aa5e068461 100644 (file)
@@ -29,7 +29,7 @@ from io import DEFAULT_BUFFER_SIZE
 try:
     import ssl
     HAVE_SSL = True
-except ImportError:
+except ModuleNotFoundError:
     HAVE_SSL = False
 
 __all__ = ["IMAP4", "IMAP4_stream", "Internaldate2tuple",
index 40869f5ac06c992fb274f280396f6a2f08e8fce5..5170b066e4ab34f7c7e821e8838450dc97566c42 100644 (file)
@@ -12,7 +12,7 @@ from _imp import (lock_held, acquire_lock, release_lock,
                   _fix_co_filename)
 try:
     from _imp import load_dynamic
-except ImportError:
+except ModuleNotFoundError:
     # Platform doesn't support dynamic loading.
     load_dynamic = None
 
index d07f02ed746aba9dddb59db85c69f065993a731f..df893ccb175c2d1bd33ed976320bac18bf3f5876 100644 (file)
@@ -14,7 +14,7 @@ import sys
 
 try:
     import _frozen_importlib as _bootstrap
-except ImportError:
+except ModuleNotFoundError:
     from . import _bootstrap
     _bootstrap._setup(sys, _imp)
 else:
index 417fe413fb2429391098351ddd438efc178aaa30..cf20e9fe1af8e0a921797f150c244fbd83b77af7 100644 (file)
@@ -3,7 +3,7 @@ from . import _bootstrap
 from . import machinery
 try:
     import _frozen_importlib
-except ImportError as exc:
+except ModuleNotFoundError as exc:
     if exc.name != '_frozen_importlib':
         raise
     _frozen_importlib = None
index 22b9e845431ac23fdf54aea7fd02a156540802cf..378e22f6d6b64c1b80b363cc6be8eeeb9152bf27 100644 (file)
@@ -51,7 +51,7 @@ from collections import namedtuple, OrderedDict
 # back to hardcording so the dependency is optional
 try:
     from dis import COMPILER_FLAG_NAMES as _flag_names
-except ImportError:
+except ModuleNotFoundError:
     CO_OPTIMIZED, CO_NEWLOCALS = 0x1, 0x2
     CO_VARARGS, CO_VARKEYWORDS = 0x4, 0x8
     CO_NESTED, CO_GENERATOR, CO_NOFREE = 0x10, 0x20, 0x40
index da7ef9c81951349030a44021085f2675bc4955b5..4f11354a615cd5eb5d3614acb151f50f7b3c3bce 100644 (file)
@@ -5,7 +5,7 @@ import re
 from json import scanner
 try:
     from _json import scanstring as c_scanstring
-except ImportError:
+except ModuleNotFoundError:
     c_scanstring = None
 
 __all__ = ['JSONDecoder']
index 39b550dbb0bda128fefffd3adb654ae032f06843..3fa90bdfef8477c0507ba009d33b9ecfef2cc452 100644 (file)
@@ -4,11 +4,11 @@ import re
 
 try:
     from _json import encode_basestring_ascii as c_encode_basestring_ascii
-except ImportError:
+except ModuleNotFoundError:
     c_encode_basestring_ascii = None
 try:
     from _json import make_encoder as c_make_encoder
-except ImportError:
+except ModuleNotFoundError:
     c_make_encoder = None
 
 ESCAPE = re.compile(r'[\x00-\x1f\\"\b\f\n\r\t]')
index 86426cde1a72c065f8dffcc8033747ca103e2515..761ade3483b833a833364c139f11f8ab30a47a78 100644 (file)
@@ -3,7 +3,7 @@
 import re
 try:
     from _json import make_scanner as c_make_scanner
-except ImportError:
+except ModuleNotFoundError:
     c_make_scanner = None
 
 __all__ = ['make_scanner']
index 81003178715037a61fd3851abdc510973cae2ed3..11a353cb99e22311d8d7e7fa656cec64295eac66 100644 (file)
@@ -706,7 +706,7 @@ class MultiprocessRefactoringTool(RefactoringTool):
                 items, write, doctests_only)
         try:
             import multiprocessing
-        except ImportError:
+        except ModuleNotFoundError:
             raise MultiprocessingUnsupported
         if self.queue is not None:
             raise RuntimeError("already doing multiple processes")
index d2a885d519f9b31db5f52ac273abfbaeaa1202d4..75ab2abbb4adada8984e687699ba747d3af4ee58 100644 (file)
@@ -47,7 +47,7 @@ try:
 
     from _locale import *
 
-except ImportError:
+except ModuleNotFoundError:
 
     # Locale emulation
 
index 46298605c45a6101b8eedc9dea85983138405844..b4552bfecb89e4dd71a329130e53b6cf9154b54a 100644 (file)
@@ -37,7 +37,7 @@ __all__ = ['BASIC_FORMAT', 'BufferingFormatter', 'CRITICAL', 'DEBUG', 'ERROR',
 
 try:
     import threading
-except ImportError: #pragma: no cover
+except ModuleNotFoundError: #pragma: no cover
     threading = None
 
 __author__  = "Vinay Sajip <vinay_sajip@red-dove.com>"
index b882a62ab3e698c96e3f4c4d8457ad27db8aa197..4354dd129da56aa389cd348cee3332500fce5268 100644 (file)
@@ -30,7 +30,7 @@ import io
 try:
     import _thread as thread
     import threading
-except ImportError: #pragma: no cover
+except ModuleNotFoundError: #pragma: no cover
     thread = None
 
 from socketserver import ThreadingTCPServer, StreamRequestHandler
index f1ddbb5edaeb4f117f363f0a12257c35d114d202..0a11b8232b42d9de797083bc0fc011426197b86b 100644 (file)
@@ -29,7 +29,7 @@ from stat import ST_DEV, ST_INO, ST_MTIME
 import queue
 try:
     import threading
-except ImportError: #pragma: no cover
+except ModuleNotFoundError: #pragma: no cover
     threading = None
 
 #
@@ -995,7 +995,7 @@ class NTEventLogHandler(logging.Handler):
                 logging.ERROR   : win32evtlog.EVENTLOG_ERROR_TYPE,
                 logging.CRITICAL: win32evtlog.EVENTLOG_ERROR_TYPE,
          }
-        except ImportError:
+        except ModuleNotFoundError:
             print("The Python Win32 extensions for NT (service, event "\
                         "logging) appear not to be available.")
             self._welu = None
index d34f9e944cc8bf11835fbb467345b0eb85c779bf..c5af1026f831be91faad962c73aa473f8aa800e7 100644 (file)
@@ -187,7 +187,7 @@ def realpath(path):
     path = abspath(path)
     try:
         import Carbon.File
-    except ImportError:
+    except ModuleNotFoundError:
         return path
     if not path:
         return path
index 2049516b2d6a88512a670506726ab3d06eff7317..a45b3bf38b9ad8c94ca211467c92813d5e6c711e 100644 (file)
@@ -23,7 +23,7 @@ import io
 import contextlib
 try:
     import fcntl
-except ImportError:
+except ModuleNotFoundError:
     fcntl = None
 
 __all__ = [ 'Mailbox', 'Maildir', 'mbox', 'MH', 'Babyl', 'MMDF',
index 5aaa9080873c3f775eca2f2b9462876eb2487776..a5825cdfa462950133ba7abe9b282dea34edb98b 100644 (file)
@@ -29,7 +29,7 @@ import posixpath
 import urllib.parse
 try:
     import winreg as _winreg
-except ImportError:
+except ModuleNotFoundError:
     _winreg = None
 
 __all__ = [
index 47e21239ce8d85746e31acc2ea34e6f89d4b8db3..40f7a9e594b1daf5ba0c849934b7f6f1e49b77af 100644 (file)
@@ -27,7 +27,7 @@ from multiprocessing.forking import ForkingPickler
 try:
     import _winapi
     from _winapi import WAIT_OBJECT_0, WAIT_TIMEOUT, INFINITE
-except ImportError:
+except ModuleNotFoundError:
     if sys.platform == 'win32':
         raise
     _winapi = None
index 54c073dc17c5b4a21064afc761839039f84c799e..8841e4e9fcaa3254a21ad54aa52185ceb5672e12 100644 (file)
@@ -73,7 +73,7 @@ ForkingPickler.register(type(int.__add__), _reduce_method_descriptor)
 
 try:
     from functools import partial
-except ImportError:
+except ModuleNotFoundError:
     pass
 else:
     def _reduce_partial(p):
index 01d4303f4dae903c32f3c4ad997233a7004669e5..7f26e1ca6e951534fdd8d61d9abc8dec05d28fe5 100644 (file)
@@ -71,7 +71,7 @@ import warnings
 
 try:
     import ssl
-except ImportError:
+except ModuleNotFoundError:
     _have_ssl = False
 else:
     _have_ssl = True
index d81f7285aee8683f22d61a7f6e3339aebf6bac52..4dfea3275e228576d9ff121fe42657328171030c 100644 (file)
@@ -566,7 +566,7 @@ def normpath(path):
 try:
     from nt import _getfullpathname
 
-except ImportError: # not running on Windows - mock up something sensible
+except ModuleNotFoundError: # not running on Windows - mock up something sensible
     def abspath(path):
         """Return the absolute version of a path."""
         if not isabs(path):
@@ -659,6 +659,6 @@ try:
     # This is overkill on Windows - just pass the path to GetFileAttributes
     # and check the attribute from there.
     from nt import _isdir as isdir
-except ImportError:
+except ModuleNotFoundError:
     # Use genericpath.isdir as imported above.
     pass
index d31a9a453797420f638dec164754e7a6ab2e4aad..c8273cc90e3fb91bc70a0aeffbf415c5bb6bdc4c 100644 (file)
@@ -360,7 +360,7 @@ def ixor(a, b):
 
 try:
     from _operator import *
-except ImportError:
+except ModuleNotFoundError:
     pass
 else:
     from _operator import __doc__
index 37764d317ac089cb5b867ba80f8686a64414cc67..3812258cc33ed973374e897f07b2090187f5c31f 100644 (file)
@@ -87,7 +87,7 @@ def _repr(self):
 
 try:
     from gettext import gettext, ngettext
-except ImportError:
+except ModuleNotFoundError:
     def gettext(message):
         return message
 
index 96720e41ef81b5ec1643cfd6fc9840ececdc0a77..8f568c7729d3453f4c6931bc0a186ea53cea10f7 100644 (file)
--- a/Lib/os.py
+++ b/Lib/os.py
@@ -52,13 +52,13 @@ if 'posix' in _names:
     try:
         from posix import _exit
         __all__.append('_exit')
-    except ImportError:
+    except ModuleNotFoundError:
         pass
     import posixpath as path
 
     try:
         from posix import _have_functions
-    except ImportError:
+    except ModuleNotFoundError:
         pass
 
 elif 'nt' in _names:
@@ -68,7 +68,7 @@ elif 'nt' in _names:
     try:
         from nt import _exit
         __all__.append('_exit')
-    except ImportError:
+    except ModuleNotFoundError:
         pass
     import ntpath as path
 
@@ -78,7 +78,7 @@ elif 'nt' in _names:
 
     try:
         from nt import _have_functions
-    except ImportError:
+    except ModuleNotFoundError:
         pass
 
 elif 'ce' in _names:
@@ -88,7 +88,7 @@ elif 'ce' in _names:
     try:
         from ce import _exit
         __all__.append('_exit')
-    except ImportError:
+    except ModuleNotFoundError:
         pass
     # We can use the standard Windows path.
     import ntpath as path
@@ -99,11 +99,11 @@ elif 'ce' in _names:
 
     try:
         from ce import _have_functions
-    except ImportError:
+    except ModuleNotFoundError:
         pass
 
 else:
-    raise ImportError('no os specific module found')
+    raise ModuleNotFoundError('no os specific module found')
 
 sys.modules['os.path'] = path
 from os.path import (curdir, pardir, sep, pathsep, defpath, extsep, altsep,
index e5596e547ecc8ab06cba5e5ec118e13d871abf16..d964f9875b639fd96eadadc444051ef1090d4b05 100755 (executable)
@@ -158,7 +158,7 @@ class Pdb(bdb.Bdb, cmd.Cmd):
             import readline
             # remove some common file name delimiters
             readline.set_completer_delims(' \t\n`@#$%^&*()=+[{]}\\|;:\'",<>?')
-        except ImportError:
+        except ModuleNotFoundError:
             pass
         self.allow_kbdint = False
         self.nosigint = nosigint
index b3b775f4759cc187702e4e98de4585957c887bc9..5d22fceaf6bce3eb97f00af4fede9fb7f0431068 100644 (file)
@@ -90,7 +90,7 @@ class _Stop(Exception):
 # Jython has PyStringMap; it's a dict subclass with string keys
 try:
     from org.python.core import PyStringMap
-except ImportError:
+except ModuleNotFoundError:
     PyStringMap = None
 
 # Pickle opcodes.  See pickletools.py for extensive docs.  The listing
@@ -1296,7 +1296,7 @@ def loads(s, *, fix_imports=True, encoding="ASCII", errors="strict"):
 # Use the faster _pickle if possible
 try:
     from _pickle import *
-except ImportError:
+except ModuleNotFoundError:
     Pickler, Unpickler = _Pickler, _Unpickler
 
 # Doctest
index c54f7687ba5e74447ed1ed4b2e42f29f969ffd1a..5951efbbb5e031dc01b8a09c59c03d1baddafefc 100755 (executable)
@@ -460,7 +460,7 @@ def _win32_getvalue(key,name,default=''):
     try:
         # Use win32api if available
         from win32api import RegQueryValueEx
-    except ImportError:
+    except ModuleNotFoundError:
         # On Python 2.0 and later, emulate using winreg
         import winreg
         RegQueryValueEx = winreg.QueryValueEx
@@ -503,7 +503,7 @@ def win32_ver(release='',version='',csd='',ptype=''):
              RegCloseKey, GetVersionEx
         from win32con import HKEY_LOCAL_MACHINE, VER_PLATFORM_WIN32_NT, \
              VER_PLATFORM_WIN32_WINDOWS, VER_NT_WORKSTATION
-    except ImportError:
+    except ModuleNotFoundError:
         # Emulate the win32api module using Python APIs
         try:
             sys.getwindowsversion
@@ -661,7 +661,7 @@ def _mac_ver_gestalt():
     # Check whether the version info module is available
     try:
         import _gestalt
-    except ImportError:
+    except ModuleNotFoundError:
         return None
     # Get the infos
     sysv, sysa = _mac_ver_lookup(('sysv','sysa'))
@@ -697,7 +697,7 @@ def _mac_ver_xml():
 
     try:
         import plistlib
-    except ImportError:
+    except ModuleNotFoundError:
         return None
 
     pl = plistlib.readPlist(fn)
@@ -762,7 +762,7 @@ def java_ver(release='',vendor='',vminfo=('','',''),osinfo=('','','')):
     # Import the needed APIs
     try:
         import java.lang
-    except ImportError:
+    except ModuleNotFoundError:
         return release,vendor,vminfo,osinfo
 
     vendor = _java_getprop('java.vendor', vendor)
@@ -874,7 +874,7 @@ def _node(default=''):
     """
     try:
         import socket
-    except ImportError:
+    except ModuleNotFoundError:
         # No sockets...
         return default
     try:
@@ -1138,7 +1138,7 @@ def uname():
         # Get processor information
         try:
             import vms_lib
-        except ImportError:
+        except ModuleNotFoundError:
             pass
         else:
             csid, cpu_number = vms_lib.getsyi('SYI$_CPU',0)
index 0f12ae2f2efca86f04271ad88c1ba6457226c132..5d62ba44e7505558afaf8d6b2d1202d5fc43e807 100644 (file)
@@ -20,7 +20,7 @@ import socket
 try:
     import ssl
     HAVE_SSL = True
-except ImportError:
+except ModuleNotFoundError:
     HAVE_SSL = False
 
 __all__ = ["POP3","error_proto"]
index e1ec355740672ad539b7c10bc0615e7b0b5b3802..5e5dcaecd7bf13d7e6741cc9ad26ea14f1a32ba3 100644 (file)
@@ -528,7 +528,7 @@ if __name__ == '__main__':
     import cmd
     try:
         import readline
-    except ImportError:
+    except ModuleNotFoundError:
         pass
 
     class ProfileBrowser(cmd.Cmd):
index e841f12f3edb9b85cc34891e2a441943f85f6759..605aeee5588cd3421d72d5c910bc026f9ada9e0f 100644 (file)
@@ -67,7 +67,7 @@ def slave_open(tty_name):
     result = os.open(tty_name, os.O_RDWR)
     try:
         from fcntl import ioctl, I_PUSH
-    except ImportError:
+    except ModuleNotFoundError:
         return result
     try:
         ioctl(result, I_PUSH, "ptem")
index 6a2b44ac41235911a266d094e42509a2a067f84b..2e9b6d518fc4e39c02744c08ccbb7afd50234bbc 100755 (executable)
@@ -1893,7 +1893,7 @@ Here is a list of available topics.  Enter any topic name to get more help.
     def showtopic(self, topic, more_xrefs=''):
         try:
             import pydoc_data.topics
-        except ImportError:
+        except ModuleNotFoundError:
             self.output.write('''
 Sorry, topic and keyword documentation is not available because the
 module "pydoc_data.topics" could not be found.
@@ -1933,7 +1933,7 @@ module "pydoc_data.topics" could not be found.
         """
         try:
             import pydoc_data.topics
-        except ImportError:
+        except ModuleNotFoundError:
             return('''
 Sorry, topic and keyword documentation is not available because the
 module "pydoc_data.topics" could not be found.
index c3296fe1382ce77d608894c60712ff8e22edf3f2..99cb5b9f5704caf1c818afcb49cfd143b6bc0743 100644 (file)
@@ -2,13 +2,13 @@
 
 try:
     import threading
-except ImportError:
+except ModuleNotFoundError:
     import dummy_threading as threading
 from collections import deque
 from heapq import heappush, heappop
 try:
     from time import monotonic as time
-except ImportError:
+except ModuleNotFoundError:
     from time import time
 
 __all__ = ['Empty', 'Full', 'Queue', 'PriorityQueue', 'LifoQueue']
index e5bd010d5ba89cfc5f3fc143ab0056be3b59c4b5..63afc1db3d6a6096d0f8ccb65d312dddbff64231 100755 (executable)
@@ -13,7 +13,7 @@ EMPTYSTRING = b''
 
 try:
     from binascii import a2b_qp, b2a_qp
-except ImportError:
+except ModuleNotFoundError:
     a2b_qp = None
     b2a_qp = None
 
index f8033604da28da12dcad7d164580be638e51904a..81005f15193fab28746e9eebf3a5544ea0d7fb74 100644 (file)
@@ -6,7 +6,7 @@ import builtins
 from itertools import islice
 try:
     from _thread import get_ident
-except ImportError:
+except ModuleNotFoundError:
     from _dummy_thread import get_ident
 
 def recursive_repr(fillvalue='...'):
index d3a443737a5297320e8ca6acaa0c7a6f496d8297..4de0c88a802e85b908e09bcc448086f1678357c8 100644 (file)
@@ -154,7 +154,7 @@ def get_class_members(klass):
 
 try:
     import readline
-except ImportError:
+except ModuleNotFoundError:
     pass
 else:
     readline.set_completer(Completer().complete)
index 9a82a89688d0ea77ff3f05811bd404317cc2e4a7..14f6fff4e33f0cdf74e2a5dc6986bb076f1f91ed 100644 (file)
@@ -33,11 +33,11 @@ import heapq
 from collections import namedtuple
 try:
     import threading
-except ImportError:
+except ModuleNotFoundError:
     import dummy_threading as threading
 try:
     from time import monotonic as _time
-except ImportError:
+except ModuleNotFoundError:
     from time import time as _time
 
 __all__ = ["scheduler"]
index 6879d8bbd1a907eb093398b41c0b327e76108375..9d1a466801d166b16993ffbf7e2b136fe546b255 100644 (file)
@@ -17,17 +17,17 @@ try:
     import bz2
     del bz2
     _BZ2_SUPPORTED = True
-except ImportError:
+except ModuleNotFoundError:
     _BZ2_SUPPORTED = False
 
 try:
     from pwd import getpwnam
-except ImportError:
+except ModuleNotFoundError:
     getpwnam = None
 
 try:
     from grp import getgrnam
-except ImportError:
+except ModuleNotFoundError:
     getgrnam = None
 
 __all__ = ["copyfileobj", "copyfile", "copymode", "copystat", "copy", "copy2",
@@ -668,7 +668,7 @@ def _make_zipfile(base_name, base_dir, verbose=0, dry_run=0, logger=None):
     # command.
     try:
         import zipfile
-    except ImportError:
+    except ModuleNotFoundError:
         zipfile = None
 
     if zipfile is None:
@@ -858,7 +858,7 @@ def _unpack_zipfile(filename, extract_dir):
     """
     try:
         import zipfile
-    except ImportError:
+    except ModuleNotFoundError:
         raise ReadError('zlib not supported, cannot unpack this archive.')
 
     if not zipfile.is_zipfile(filename):
index 96a4bef71efcc007e2bb9fa11166db98e77d87aa..a1f94f7ea1a43d87e100c2fb85924d952e5cb802 100644 (file)
@@ -469,7 +469,7 @@ def enablerlcompleter():
         try:
             import readline
             import rlcompleter
-        except ImportError:
+        except ModuleNotFoundError:
             return
 
         # Reading the initialization (config) file may not be enough to set a
@@ -570,7 +570,7 @@ def execsitecustomize():
     """Run custom site specific code, if available."""
     try:
         import sitecustomize
-    except ImportError:
+    except ModuleNotFoundError:
         pass
     except Exception as err:
         if os.environ.get("PYTHONVERBOSE"):
@@ -586,7 +586,7 @@ def execusercustomize():
     """Run custom user specific code, if available."""
     try:
         import usercustomize
-    except ImportError:
+    except ModuleNotFoundError:
         pass
     except Exception as err:
         if os.environ.get("PYTHONVERBOSE"):
index f28036a5b4f2e66a2dbedd1812cb3e804c71cb61..457cef64e055c183ebf40f249bd1da85d433878e 100755 (executable)
@@ -846,7 +846,7 @@ if __name__ == '__main__':
     if options.setuid:
         try:
             import pwd
-        except ImportError:
+        except ModuleNotFoundError:
             print('Cannot import module "pwd"; try running with -n option.', file=sys.stderr)
             sys.exit(1)
         nobody = pwd.getpwnam('nobody')[2]
index cc46e4f49f5a1b7c5b8115a93e59f21b47d4a83f..e26bfbd465261a9a5c322c2229238ea0650b500d 100644 (file)
@@ -171,7 +171,7 @@ def _fix_eols(data):
 
 try:
     import ssl
-except ImportError:
+except ModuleNotFoundError:
     _have_ssl = False
 else:
     _have_ssl = True
index 96f8ed0c7f7a4d4457881ea0df2407b1c29b24f0..db28b4b35cd442a95506017395b5819b4889e0eb 100644 (file)
@@ -51,7 +51,7 @@ import os, sys, io
 
 try:
     import errno
-except ImportError:
+except ModuleNotFoundError:
     errno = None
 EBADF = getattr(errno, 'EBADF', 9)
 EAGAIN = getattr(errno, 'EAGAIN', 11)
index e9e4e4e4add0cdcbcea4bbd75409d833573646dd..a6ee71872070f488843d5ee61242c6510052cd63 100644 (file)
@@ -136,7 +136,7 @@ import os
 import errno
 try:
     import threading
-except ImportError:
+except ModuleNotFoundError:
     import dummy_threading as threading
 
 __all__ = ["TCPServer","UDPServer","ForkingUDPServer","ForkingTCPServer",
index 04649fc5492d77efd7abe271beaf5298caf8e70d..b728cb31068d748260f8b4878a582e424ea461cc 100644 (file)
@@ -25,7 +25,7 @@ import unittest
 import sqlite3 as sqlite
 try:
     import threading
-except ImportError:
+except ModuleNotFoundError:
     threading = None
 
 from test.support import TESTFN, unlink
index 3b4cb6d1d1ad08e6b005aafadf568cc526fbcc84..9a1d4639c88af251d79ecb63465af6acbc7c8ada 100644 (file)
@@ -26,7 +26,7 @@ import unittest
 import sqlite3 as sqlite
 try:
     import zlib
-except ImportError:
+except ModuleNotFoundError:
     zlib = None
 
 
index ea6e6be96e0dfd3b7a94279bb65cd4167dab3c60..ed84444639a2773ce9640e5c9bc25a3423e3fdd9 100644 (file)
@@ -295,7 +295,7 @@ def _mk_bitmap(bits):
 def _optimize_unicode(charset, fixup):
     try:
         import array
-    except ImportError:
+    except ModuleNotFoundError:
         return charset
     charmap = [0]*65536
     negate = 0
index d78d96d160e7ee56033ddc8dcad7ccf408b23211..5177ae7b4598a8765b9ca87758f095d973ec4679 100644 (file)
@@ -127,14 +127,14 @@ _PROTOCOL_NAMES = {
 try:
     from _ssl import PROTOCOL_SSLv2
     _SSLv2_IF_EXISTS = PROTOCOL_SSLv2
-except ImportError:
+except ModuleNotFoundError:
     _SSLv2_IF_EXISTS = None
 else:
     _PROTOCOL_NAMES[PROTOCOL_SSLv2] = "SSLv2"
 
 try:
     from _ssl import PROTOCOL_TLSv1_1, PROTOCOL_TLSv1_2
-except ImportError:
+except ModuleNotFoundError:
     pass
 else:
     _PROTOCOL_NAMES[PROTOCOL_TLSv1_1] = "TLSv1.1"
index 78907e0e943c9c7db926a8cb7aa77ec4372b2829..553d3c6a47e402c75528c6e9e67b9d16b70772e2 100644 (file)
@@ -353,7 +353,7 @@ import warnings
 import errno
 try:
     from time import monotonic as _time
-except ImportError:
+except ModuleNotFoundError:
     from time import time as _time
 
 # Exception classes used by this module.
index 06df7df7405ed4d0f6e55b30cd49ded59b09a75d..289aefd9d7827da2aa9243d6a5b06ece50a31163 100644 (file)
@@ -50,7 +50,7 @@ import re
 
 try:
     import grp, pwd
-except ImportError:
+except ModuleNotFoundError:
     grp = pwd = None
 
 # os.symlink on Windows prior to 6.0 raises NotImplementedError
@@ -381,7 +381,7 @@ class _Stream:
             if comptype == "gz":
                 try:
                     import zlib
-                except ImportError:
+                except ModuleNotFoundError:
                     raise CompressionError("zlib module is not available")
                 self.zlib = zlib
                 self.crc = zlib.crc32(b"")
@@ -394,7 +394,7 @@ class _Stream:
             elif comptype == "bz2":
                 try:
                     import bz2
-                except ImportError:
+                except ModuleNotFoundError:
                     raise CompressionError("bz2 module is not available")
                 if mode == "r":
                     self.dbuf = b""
@@ -406,7 +406,7 @@ class _Stream:
             elif comptype == "xz":
                 try:
                     import lzma
-                except ImportError:
+                except ModuleNotFoundError:
                     raise CompressionError("lzma module is not available")
                 if mode == "r":
                     self.dbuf = b""
@@ -1654,7 +1654,7 @@ class TarFile(object):
 
         try:
             import bz2
-        except ImportError:
+        except ModuleNotFoundError:
             raise CompressionError("bz2 module is not available")
 
         fileobj = bz2.BZ2File(fileobj or name, mode,
@@ -1678,7 +1678,7 @@ class TarFile(object):
 
         try:
             import lzma
-        except ImportError:
+        except ModuleNotFoundError:
             raise CompressionError("lzma module is not available")
 
         fileobj = lzma.LZMAFile(fileobj or name, mode, preset=preset)
index 10b6a1b334edb3ac723aca34b56b356589bb0804..f2c3ccc48bc5cbe04ccaeaa92b99d13b2e6b8da9 100644 (file)
@@ -36,7 +36,7 @@ from random import Random as _Random
 
 try:
     import fcntl as _fcntl
-except ImportError:
+except ModuleNotFoundError:
     def _set_cloexec(fd):
         pass
 else:
@@ -53,7 +53,7 @@ else:
 
 try:
     import _thread
-except ImportError:
+except ModuleNotFoundError:
     import _dummy_thread as _thread
 _allocate_lock = _thread.allocate_lock
 
index 3526894ae0f3cea54e3ce11a3680471c7b673034..90612e5839e8adc9efbc9d5cccd234dffc90dd71 100644 (file)
@@ -6,14 +6,14 @@ import _thread
 from time import sleep as _sleep
 try:
     from time import monotonic as _time
-except ImportError:
+except ModuleNotFoundError:
     from time import time as _time
 from traceback import format_exc as _format_exc
 from _weakrefset import WeakSet
 from itertools import islice as _islice
 try:
     from _collections import deque as _deque
-except ImportError:
+except ModuleNotFoundError:
     from collections import deque as _deque
 
 # Note regarding PEP 8 compliant names
@@ -922,7 +922,7 @@ _shutdown = _MainThread()._exitfunc
 
 try:
     from _thread import _local as local
-except ImportError:
+except ModuleNotFoundError:
     from _threading_local import local
 
 
index 09fe9ee0e48f3fcf5182b2acf337fbff15e3499c..dc72b8c6034fa33b3c79b74b2524f760c365c1a2 100644 (file)
@@ -61,12 +61,12 @@ import pickle
 from warnings import warn as _warn
 try:
     from time import monotonic as _time
-except ImportError:
+except ModuleNotFoundError:
     from time import time as _time
 
 try:
     import threading
-except ImportError:
+except ModuleNotFoundError:
     _settrace = sys.settrace
 
     def _unsettrace():
index 4765a942886d813af8c85d6dcbe3319698f35ce3..d54b9747fb1d4c83e564c26fe83dc5bfbd0b49b1 100644 (file)
@@ -110,7 +110,7 @@ from urllib.response import addinfourl, addclosehook
 # check for SSL
 try:
     import ssl
-except ImportError:
+except ModuleNotFoundError:
     _have_ssl = False
 else:
     _have_ssl = True
@@ -2512,7 +2512,7 @@ elif os.name == 'nt':
         proxies = {}
         try:
             import winreg
-        except ImportError:
+        except ModuleNotFoundError:
             # Std module, so should be around - but you never know!
             return proxies
         try:
@@ -2560,7 +2560,7 @@ elif os.name == 'nt':
     def proxy_bypass_registry(host):
         try:
             import winreg
-        except ImportError:
+        except ModuleNotFoundError:
             # Std modules, so should be around - but you never know!
             return 0
         try:
index ecdb68e880817558f6b073fc8f65673039a4b8a4..102c8d3f237609af09c0818fda58e80f4d313323 100644 (file)
@@ -35,7 +35,7 @@ import sys
 import sysconfig
 try:
     import threading
-except ImportError:
+except ModuleNotFoundError:
     threading = None
 
 logger = logging.getLogger(__name__)
index b05a08ee83a323b96ecfac7c6c0a653d39ba0967..38223617c67e7e15daadf84e06bded0bf55ec460 100644 (file)
@@ -144,8 +144,8 @@ def _getcategory(category):
         module = category[:i]
         klass = category[i+1:]
         try:
-            m = __import__(module, None, None, [klass])
-        except ImportError:
+            m = __import__(module, fromlist[klass])
+        except ModuleNotFoundError:
             raise _OptionError("invalid module name: %r" % (module,))
         try:
             cat = getattr(m, klass)
@@ -362,7 +362,7 @@ try:
     defaultaction = _defaultaction
     onceregistry = _onceregistry
     _warnings_defaults = True
-except ImportError:
+except ModuleNotFoundError:
     filters = []
     defaultaction = "default"
     onceregistry = {}
index edf25818f13e66a9cb5ec2f48578518b19a1cb93..9c129d829ddb227990068eeea5c7124af0dddc35 100644 (file)
@@ -1439,13 +1439,13 @@ class XMLParser:
     def __init__(self, html=0, target=None, encoding=None):
         try:
             from xml.parsers import expat
-        except ImportError:
+        except ModuleNotFoundError:
             try:
                 import pyexpat as expat
-            except ImportError:
-                raise ImportError(
-                    "No module named expat; use SimpleXMLTreeBuilder instead"
-                    )
+            except ModuleNotFoundError:
+                raise ModuleNotFoundError(
+                    "No module named expat; use SimpleXMLTreeBuilder instead",
+                    name='expat')
         parser = expat.ParserCreate(encoding, "}")
         if target is None:
             target = TreeBuilder()
index a227cdab572f66d031f482af08a929fed48de52f..8619747529c2b52f611260dac2993a2e5b2e8a0a 100644 (file)
@@ -20,7 +20,7 @@ del sys
 
 try:
     from xml.parsers import expat
-except ImportError:
+except ModuleNotFoundError:
     raise SAXReaderNotAvailable("expat not supported", None)
 else:
     if not hasattr(expat, "ParserCreate"):
@@ -30,18 +30,7 @@ from xml.sax import xmlreader, saxutils, handler
 AttributesImpl = xmlreader.AttributesImpl
 AttributesNSImpl = xmlreader.AttributesNSImpl
 
-# If we're using a sufficiently recent version of Python, we can use
-# weak references to avoid cycles between the parser and content
-# handler, otherwise we'll just have to pretend.
-try:
-    import _weakref
-except ImportError:
-    def _mkproxy(o):
-        return o
-else:
-    import weakref
-    _mkproxy = weakref.proxy
-    del weakref, _weakref
+import weakref
 
 # --- ExpatLocator
 
@@ -52,7 +41,7 @@ class ExpatLocator(xmlreader.Locator):
     a circular reference between the parser and the content handler.
     """
     def __init__(self, parser):
-        self._ref = _mkproxy(parser)
+        self._ref = weakref.proxy(parser)
 
     def getColumnNumber(self):
         parser = self._ref
index ff422652e69eb3fe2ee00276582b31bb836b86ae..55546e47309fea90b492216034b65396dd4ea437 100644 (file)
@@ -139,7 +139,7 @@ import errno
 from io import BytesIO
 try:
     import gzip
-except ImportError:
+except ModuleNotFoundError:
     gzip = None #python can be built without zlib/gzip support
 
 # --------------------------------------------------------------------