summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/importlib/_bootstrap.py2
-rw-r--r--Lib/test/test_importlib/import_/test_path.py24
-rw-r--r--Python/importlib.h2
3 files changed, 26 insertions, 2 deletions
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
index 4864024..beaa9b3 100644
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -1869,7 +1869,7 @@ class PathFinder:
loader, portions = finder.find_loader(fullname)
else:
loader = finder.find_module(fullname)
- portions = None
+ portions = []
if loader is not None:
return spec_from_loader(fullname, loader)
spec = ModuleSpec(fullname, None)
diff --git a/Lib/test/test_importlib/import_/test_path.py b/Lib/test/test_importlib/import_/test_path.py
index 713e754..1274f8c 100644
--- a/Lib/test/test_importlib/import_/test_path.py
+++ b/Lib/test/test_importlib/import_/test_path.py
@@ -116,5 +116,29 @@ Frozen_FinderTests, Source_FinderTests = util.test_both(
FinderTests, importlib=importlib, machinery=machinery)
+class PathEntryFinderTests:
+
+ def test_finder_with_failing_find_module(self):
+ # PathEntryFinder with find_module() defined should work.
+ # Issue #20763.
+ class Finder:
+ path_location = 'test_finder_with_find_module'
+ def __init__(self, path):
+ if path != self.path_location:
+ raise ImportError
+
+ @staticmethod
+ def find_module(fullname):
+ return None
+
+
+ with util.import_state(path=[Finder.path_location]+sys.path[:],
+ path_hooks=[Finder]):
+ self.machinery.PathFinder.find_spec('importlib')
+
+Frozen_PEFTests, Source_PEFTests = util.test_both(
+ PathEntryFinderTests, machinery=machinery)
+
+
if __name__ == '__main__':
unittest.main()
diff --git a/Python/importlib.h b/Python/importlib.h
index f55c450..2644b1d 100644
--- a/Python/importlib.h
+++ b/Python/importlib.h
@@ -3365,7 +3365,7 @@ const unsigned char _Py_M__importlib[] = {
116,0,0,124,2,0,100,1,0,131,2,0,114,39,0,124,
2,0,106,1,0,124,1,0,131,1,0,92,2,0,125,3,
0,125,4,0,110,21,0,124,2,0,106,2,0,124,1,0,
- 131,1,0,125,3,0,100,0,0,125,4,0,124,3,0,100,
+ 131,1,0,125,3,0,103,0,0,125,4,0,124,3,0,100,
0,0,107,9,0,114,85,0,116,3,0,124,1,0,124,3,
0,131,2,0,83,116,4,0,124,1,0,100,0,0,131,2,
0,125,5,0,124,4,0,124,5,0,95,5,0,124,5,0,