importer: fix glaring bug in find_related()

Overwriting 'fullname' variable caused basically nonsensical filtering.
Result was including the module being searched in the list of
dependencies, which was causing ModuleResponder to send it early, which
was causing contexts to start importing the module before preloading of
dependencies had completed.
wip-fakessh-exit-status
David Wilson 6 years ago
parent 0dbb1ec028
commit 2e729e54cc

@ -401,7 +401,9 @@ class ModuleFinder(object):
if level == -1:
modnames = [modname, '%s.%s' % (fullname, modname)]
else:
modnames = [self.resolve_relpath(fullname, level) + modname]
modnames = [
'%s.%s' % (self.resolve_relpath(fullname, level), modname)
]
maybe_names.extend(modnames)
maybe_names.extend(
@ -425,11 +427,12 @@ class ModuleFinder(object):
found = set()
while stack:
fullname = stack.pop(0)
fullnames = self.find_related_imports(fullname)
stack.extend(set(fullnames).difference(found, stack, [fullname]))
found.update(fullnames)
name = stack.pop(0)
names = self.find_related_imports(name)
stack.extend(set(names).difference(found, stack))
found.update(names)
found.discard(fullname)
return sorted(found)

Loading…
Cancel
Save