[Python-checkins] cpython (3.5): Issue #24285: fix importing extensions from packages
nick.coghlan
python-checkins at python.org
Tue May 26 13:57:40 CEST 2015
https://hg.python.org/cpython/rev/55e6f3f94b99
changeset: 96301:55e6f3f94b99
branch: 3.5
parent: 96297:2f59747dba6c
user: Nick Coghlan <ncoghlan at gmail.com>
date: Tue May 26 21:48:17 2015 +1000
summary:
Issue #24285: fix importing extensions from packages
files:
Lib/test/test_importlib/extension/test_loader.py | 7 +++++++
Misc/NEWS | 6 +++++-
Python/importdl.c | 2 +-
3 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/Lib/test/test_importlib/extension/test_loader.py b/Lib/test/test_importlib/extension/test_loader.py
--- a/Lib/test/test_importlib/extension/test_loader.py
+++ b/Lib/test/test_importlib/extension/test_loader.py
@@ -170,6 +170,13 @@
loader.exec_module(module)
return module
+ def test_load_submodule(self):
+ '''Test loading a simulated submodule'''
+ module = self.load_module_by_name('pkg.' + self.name)
+ self.assertIsInstance(module, types.ModuleType)
+ self.assertEqual(module.__name__, 'pkg.' + self.name)
+ self.assertEqual(module.str_const, 'something different')
+
def test_load_twice(self):
'''Test that 2 loads result in 2 module objects'''
module1 = self.load_module_by_name(self.name)
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,9 @@
Core and Builtins
-----------------
+- Issue #24285: Fixed regression that prevented importing extension modules
+ from inside packages. Patch by Petr Viktorin.
+
Library
-------
@@ -24,7 +27,8 @@
- Issue #24276: Fixed optimization of property descriptor getter.
-- Issue #24268: PEP 489: Multi-phase extension module initialization
+- Issue #24268: PEP 489: Multi-phase extension module initialization.
+ Patch by Petr Viktorin.
- Issue #23955: Add pyvenv.cfg option to suppress registry/environment
lookup for generating sys.path on Windows.
diff --git a/Python/importdl.c b/Python/importdl.c
--- a/Python/importdl.c
+++ b/Python/importdl.c
@@ -45,7 +45,7 @@
if (lastdot < -1) {
return NULL;
} else if (lastdot >= 0) {
- tmp = PyUnicode_Substring(name, lastdot, name_len);
+ tmp = PyUnicode_Substring(name, lastdot + 1, name_len);
if (tmp == NULL)
return NULL;
name = tmp;
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list