diff options
author | Brett Cannon <brett@python.org> | 2012-04-15 01:50:00 (GMT) |
---|---|---|
committer | Brett Cannon <brett@python.org> | 2012-04-15 01:50:00 (GMT) |
commit | 49f8d8b016b030b7501ce8dc2babe5dfc14985e9 (patch) | |
tree | 8ae9126a13aa37da0d7d53e914e5e20864cb5c47 /Lib | |
parent | 59f9c3affc68611ef871212ab17d086c33107d82 (diff) | |
download | cpython-49f8d8b016b030b7501ce8dc2babe5dfc14985e9.zip cpython-49f8d8b016b030b7501ce8dc2babe5dfc14985e9.tar.gz cpython-49f8d8b016b030b7501ce8dc2babe5dfc14985e9.tar.bz2 |
Handle importing pkg.mod by executing
__import__('mod', {'__packaging__': 'pkg', level=1) w/o properly (and
thus not segfaulting).
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/importlib/_bootstrap.py | 2 | ||||
-rw-r--r-- | Lib/importlib/test/import_/test_relative_imports.py | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index 2b5c949..ee9936f 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -1083,7 +1083,7 @@ def __import__(name, globals={}, locals={}, fromlist=[], level=0): return module else: cut_off = len(name) - len(name.partition('.')[0]) - return sys.modules[module.__name__[:-cut_off]] + return sys.modules[module.__name__[:len(module.__name__)-cut_off]] else: return _handle_fromlist(module, fromlist, _gcd_import) diff --git a/Lib/importlib/test/import_/test_relative_imports.py b/Lib/importlib/test/import_/test_relative_imports.py index a0f6b2d..5b4e23c 100644 --- a/Lib/importlib/test/import_/test_relative_imports.py +++ b/Lib/importlib/test/import_/test_relative_imports.py @@ -193,6 +193,15 @@ class RelativeImports(unittest.TestCase): self.assertEqual(module.__name__, '__runpy_pkg__.uncle.cousin') self.relative_import_test(create, globals_, callback) + def test_import_relative_import_no_fromlist(self): + # Import a relative module w/ no fromlist. + create = ['crash.__init__', 'crash.mod'] + globals_ = [{'__package__': 'crash', '__name__': 'crash'}] + def callback(global_): + import_util.import_('crash') + mod = import_util.import_('mod', global_, {}, [], 1) + self.assertEqual(mod.__name__, 'crash.mod') + self.relative_import_test(create, globals_, callback) def test_main(): |