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

This commit is contained in:
Petri Lehtinen 2012-05-18 21:51:11 +03:00
parent 491ef97f75
commit 280e9f7ce5
4 changed files with 12 additions and 0 deletions

View file

@ -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

View file

@ -188,6 +188,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)

View file

@ -297,6 +297,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

View file

@ -60,6 +60,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 #14832: fixed the order of the argument references in the error - Issue #14832: fixed the order of the argument references in the error
message produced by unittest's assertItemsEqual. message produced by unittest's assertItemsEqual.