From b1611e2772af2c6eb73a6b3d04b3dbb43308fa6c Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Wed, 12 Jun 2013 16:59:46 -0400 Subject: Issue #15767: Introduce ModuleNotFoundError, a subclass of ImportError. The exception is raised by import when a module could not be found. Technically this is defined as no viable loader could be found for the specified module. This includes ``from ... import`` statements so that the module usage is consistent for all situations where import couldn't find what was requested. This should allow for the common idiom of:: try: import something except ImportError: pass to be updated to using ModuleNotFoundError and not accidentally mask ImportError messages that should propagate (e.g. issues with a loader). This work was driven by the fact that the ``from ... import`` statement needed to be able to tell the difference between an ImportError that simply couldn't find a module (and thus silence the exception so that ceval can raise it) and an ImportError that represented an actual problem. --- Lib/pydoc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Lib/pydoc.py') diff --git a/Lib/pydoc.py b/Lib/pydoc.py index 3f6fdf0b94..6a2b44ac41 100755 --- a/Lib/pydoc.py +++ b/Lib/pydoc.py @@ -317,7 +317,7 @@ def safeimport(path, forceload=0, cache={}): elif exc is SyntaxError: # A SyntaxError occurred before we could execute the module. raise ErrorDuringImport(value.filename, info) - elif exc is ImportError and value.name == path: + elif issubclass(exc, ImportError) and value.name == path: # No such module in the path. return None else: -- cgit v1.2.1