mirror of https://github.com/python/cpython.git
Issue #20763: Fix importlib.machinery.PathFinder to support
PathEntryFinder instances which only define find_module(). Reported by Yukihiro Nakadaira.
This commit is contained in:
parent
d44cebb0f5
commit
26dd0ff075
|
@ -1869,7 +1869,7 @@ def _legacy_get_spec(cls, fullname, finder):
|
||||||
loader, portions = finder.find_loader(fullname)
|
loader, portions = finder.find_loader(fullname)
|
||||||
else:
|
else:
|
||||||
loader = finder.find_module(fullname)
|
loader = finder.find_module(fullname)
|
||||||
portions = None
|
portions = []
|
||||||
if loader is not None:
|
if loader is not None:
|
||||||
return spec_from_loader(fullname, loader)
|
return spec_from_loader(fullname, loader)
|
||||||
spec = ModuleSpec(fullname, None)
|
spec = ModuleSpec(fullname, None)
|
||||||
|
|
|
@ -116,5 +116,29 @@ def test_None_on_sys_path(self):
|
||||||
FinderTests, importlib=importlib, machinery=machinery)
|
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__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -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,
|
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,
|
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,
|
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,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,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,
|
0,125,5,0,124,4,0,124,5,0,95,5,0,124,5,0,
|
||||||
|
|
Loading…
Reference in New Issue