Commit 8d886046 authored by Petri Lehtinen's avatar Petri Lehtinen

#14798: pyclbr now raises ImportError instead of KeyError for missing packages

parent 1033b310
...@@ -128,6 +128,8 @@ def _readmodule(module, path, inpackage=None): ...@@ -128,6 +128,8 @@ def _readmodule(module, path, inpackage=None):
parent = _readmodule(package, path, inpackage) parent = _readmodule(package, path, inpackage)
if inpackage is not None: if inpackage is not None:
package = "%s.%s" % (inpackage, package) package = "%s.%s" % (inpackage, package)
if not '__path__' in parent:
raise ImportError('No package named {}'.format(package))
return _readmodule(submodule, parent['__path__'], package) return _readmodule(submodule, parent['__path__'], package)
# Search the path for the module # Search the path for the module
......
...@@ -167,6 +167,11 @@ class PyclbrTest(TestCase): ...@@ -167,6 +167,11 @@ class PyclbrTest(TestCase):
cm('email.parser') cm('email.parser')
cm('test.test_pyclbr') cm('test.test_pyclbr')
def test_issue_14798(self):
# test ImportError is raised when the first part of a dotted name is
# not a package
self.assertRaises(ImportError, pyclbr.readmodule_ex, 'asyncore.foo')
def test_main(): def test_main():
run_unittest(PyclbrTest) run_unittest(PyclbrTest)
......
...@@ -332,6 +332,7 @@ Lars Marius Garshol ...@@ -332,6 +332,7 @@ Lars Marius Garshol
Dan Gass Dan Gass
Andrew Gaul Andrew Gaul
Stephen M. Gava Stephen M. Gava
Xavier de Gaye
Harry Henry Gebel Harry Henry Gebel
Marius Gedminas Marius Gedminas
Thomas Gellekum Thomas Gellekum
......
...@@ -63,6 +63,10 @@ Core and Builtins ...@@ -63,6 +63,10 @@ Core and Builtins
Library Library
------- -------
- Issue #14798: Fix the functions in pyclbr to raise an ImportError
when the first part of a dotted name is not a package. Patch by
Xavier de Gaye.
- Issue #14829: Fix bisect and range() indexing with large indices - Issue #14829: Fix bisect and range() indexing with large indices
(>= 2 ** 32) under 64-bit Windows. (>= 2 ** 32) under 64-bit Windows.
......
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