diff options
author | Thomas Heller <theller@ctypes.org> | 2008-10-30 20:18:13 (GMT) |
---|---|---|
committer | Thomas Heller <theller@ctypes.org> | 2008-10-30 20:18:13 (GMT) |
commit | 1fac5a450562c50a3b7121598da7f010a306e50f (patch) | |
tree | 9bbe61db122422c7c67c1e1b1f7f5ae3d587ce18 | |
parent | 9f616f48caaa2c5ef8a1a1a317b41c1d53e06198 (diff) | |
download | cpython-1fac5a450562c50a3b7121598da7f010a306e50f.zip cpython-1fac5a450562c50a3b7121598da7f010a306e50f.tar.gz cpython-1fac5a450562c50a3b7121598da7f010a306e50f.tar.bz2 |
Fixed a modulefinder crash on certain relative imports.
-rw-r--r-- | Lib/modulefinder.py | 5 | ||||
-rw-r--r-- | Lib/test/test_modulefinder.py | 16 | ||||
-rw-r--r-- | Misc/NEWS | 2 |
3 files changed, 22 insertions, 1 deletions
diff --git a/Lib/modulefinder.py b/Lib/modulefinder.py index ad6a644..7f2bf8b 100644 --- a/Lib/modulefinder.py +++ b/Lib/modulefinder.py @@ -309,7 +309,10 @@ class ModuleFinder: def _add_badmodule(self, name, caller): if name not in self.badmodules: self.badmodules[name] = {} - self.badmodules[name][caller.__name__] = 1 + if caller: + self.badmodules[name][caller.__name__] = 1 + else: + self.badmodules[name]["-"] = 1 def _safe_import_hook(self, name, caller, fromlist, level=-1): # wrapper for self.import_hook() that won't raise ImportError diff --git a/Lib/test/test_modulefinder.py b/Lib/test/test_modulefinder.py index b62758a..9d7f76a 100644 --- a/Lib/test/test_modulefinder.py +++ b/Lib/test/test_modulefinder.py @@ -190,6 +190,19 @@ a/b/c/e.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): ##print "#", os.path.abspath(path) dirname = os.path.dirname(path) @@ -256,6 +269,9 @@ class ModuleFinderTest(unittest.TestCase): def test_relative_imports_2(self): self._do_test(relative_import_test_2) + def test_relative_imports_3(self): + self._do_test(relative_import_test_3) + def test_main(): distutils.log.set_threshold(distutils.log.WARN) test_support.run_unittest(ModuleFinderTest) @@ -30,6 +30,8 @@ Core and Builtins Library ------- +- Fixed a modulefinder crash on certain relative imports. + - Issue #4150: Pdb's "up" command now works for generator frames in post-mortem debugging. |