diff --git a/Lib/inspect.py b/Lib/inspect.py index 0eed68d17c702b..be5e087d5b5a02 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -844,7 +844,9 @@ def getfile(object): if ismodule(object): if getattr(object, '__file__', None): return object.__file__ - raise TypeError('{!r} is a built-in module'.format(object)) + if getattr(object, '__spec__', None) is not None: + raise TypeError(f'{object!r} is: {object.__spec__.origin}') + raise TypeError(f'cannot get source from {object!r}') if isclass(object): if hasattr(object, '__module__'): module = sys.modules.get(object.__module__) diff --git a/Lib/test/test_inspect/test_inspect.py b/Lib/test/test_inspect/test_inspect.py index e4a3a7d9add2c2..d634097fbcb930 100644 --- a/Lib/test/test_inspect/test_inspect.py +++ b/Lib/test/test_inspect/test_inspect.py @@ -15,6 +15,7 @@ from os.path import normcase import _pickle import pickle +import re import shutil import stat import sys @@ -858,6 +859,12 @@ def test_getfile_builtin_module(self): inspect.getfile(sys) self.assertStartsWith(str(e.exception), '