Commit 43ae3cea authored by Petri Lehtinen's avatar Petri Lehtinen

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

parents ed363959 8d886046
...@@ -130,6 +130,8 @@ def _readmodule(module, path, inpackage=None): ...@@ -130,6 +130,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)
......
...@@ -361,6 +361,7 @@ Lars Marius Garshol ...@@ -361,6 +361,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
......
...@@ -38,6 +38,10 @@ Core and Builtins ...@@ -38,6 +38,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 #12098: multiprocessing on Windows now starts child processes - Issue #12098: multiprocessing on Windows now starts child processes
using the same sys.flags as the current process. Initial patch by using the same sys.flags as the current process. Initial patch by
Sergey Mezentsev. Sergey Mezentsev.
......
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