From ac10be365e5c25f2bedac75b3269a22f361d51e5 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Fri, 27 Feb 2009 03:38:28 +0000 Subject: [PATCH] Fix a bug where code was trying to index an int. Left over from the situation from using str.rpartition to str.rindex. Closes Issue5213. --- Lib/importlib/__init__.py | 2 +- Lib/test/test_importlib.py | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Lib/importlib/__init__.py b/Lib/importlib/__init__.py index e046bc09fd6..35af00bb9a5 100644 --- a/Lib/importlib/__init__.py +++ b/Lib/importlib/__init__.py @@ -15,7 +15,7 @@ def _resolve_name(name, package, level): try: # rpartition is more "correct" and rfind is just as easy to use, but # neither are in Python 2.3. - dot_rindex = package.rindex('.', level)[0] + dot_rindex = package.rindex('.', level) base = package[:dot_rindex] except ValueError: base = package diff --git a/Lib/test/test_importlib.py b/Lib/test/test_importlib.py index 572b1f169e7..73bb6548be3 100644 --- a/Lib/test/test_importlib.py +++ b/Lib/test/test_importlib.py @@ -140,11 +140,14 @@ class ImportModuleTests(unittest.TestCase): pkg_name = 'pkg' pkg_long_name = '{0}.__init__'.format(pkg_name) module_name = 'mod' + subpkg_name = '{0}.subpkg'.format(pkg_name) + subpkg_long_name = '{0}.__init__'.format(subpkg_name) absolute_name = '{0}.{1}'.format(pkg_name, module_name) - relative_name = '.{0}'.format(module_name) - with mock_modules(pkg_long_name, absolute_name) as mock: + relative_name = '..{0}'.format(module_name) + with mock_modules(pkg_long_name, subpkg_long_name, + absolute_name) as mock: with import_state(meta_path=[mock]): - module = importlib.import_module(relative_name, pkg_name) + module = importlib.import_module(relative_name, subpkg_name) self.assertEqual(module.__name__, absolute_name) def test_absolute_import_with_package(self):