Commit 1fac5a45 authored by Thomas Heller's avatar Thomas Heller

Fixed a modulefinder crash on certain relative imports.

parent 9f616f48
...@@ -309,7 +309,10 @@ class ModuleFinder: ...@@ -309,7 +309,10 @@ class ModuleFinder:
def _add_badmodule(self, name, caller): def _add_badmodule(self, name, caller):
if name not in self.badmodules: if name not in self.badmodules:
self.badmodules[name] = {} self.badmodules[name] = {}
if caller:
self.badmodules[name][caller.__name__] = 1 self.badmodules[name][caller.__name__] = 1
else:
self.badmodules[name]["-"] = 1
def _safe_import_hook(self, name, caller, fromlist, level=-1): def _safe_import_hook(self, name, caller, fromlist, level=-1):
# wrapper for self.import_hook() that won't raise ImportError # wrapper for self.import_hook() that won't raise ImportError
......
...@@ -190,6 +190,19 @@ a/b/c/e.py ...@@ -190,6 +190,19 @@ a/b/c/e.py
a/b/c/f.py a/b/c/f.py
"""] """]
relative_import_test_3 = [
"a.module",
["a", "a.module"],
["a.bar"],
[],
"""\
a/__init__.py
def foo(): pass
a/module.py
from . import foo
from . import bar
"""]
def open_file(path): def open_file(path):
##print "#", os.path.abspath(path) ##print "#", os.path.abspath(path)
dirname = os.path.dirname(path) dirname = os.path.dirname(path)
...@@ -256,6 +269,9 @@ class ModuleFinderTest(unittest.TestCase): ...@@ -256,6 +269,9 @@ class ModuleFinderTest(unittest.TestCase):
def test_relative_imports_2(self): def test_relative_imports_2(self):
self._do_test(relative_import_test_2) self._do_test(relative_import_test_2)
def test_relative_imports_3(self):
self._do_test(relative_import_test_3)
def test_main(): def test_main():
distutils.log.set_threshold(distutils.log.WARN) distutils.log.set_threshold(distutils.log.WARN)
test_support.run_unittest(ModuleFinderTest) test_support.run_unittest(ModuleFinderTest)
......
...@@ -30,6 +30,8 @@ Core and Builtins ...@@ -30,6 +30,8 @@ Core and Builtins
Library Library
------- -------
- Fixed a modulefinder crash on certain relative imports.
- Issue #4150: Pdb's "up" command now works for generator frames in post-mortem - Issue #4150: Pdb's "up" command now works for generator frames in post-mortem
debugging. debugging.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment