summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorBrett Cannon <brett@python.org>2012-04-15 01:50:00 (GMT)
committerBrett Cannon <brett@python.org>2012-04-15 01:50:00 (GMT)
commit49f8d8b016b030b7501ce8dc2babe5dfc14985e9 (patch)
tree8ae9126a13aa37da0d7d53e914e5e20864cb5c47 /Lib
parent59f9c3affc68611ef871212ab17d086c33107d82 (diff)
downloadcpython-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.py2
-rw-r--r--Lib/importlib/test/import_/test_relative_imports.py9
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():