Commit 273323cf authored by Brett Cannon's avatar Brett Cannon

Issue #14592: A relative import will raise a KeyError if __package__

or __name__ are not set in globals.

Thanks to Stefan Behnel for the bug report.
parent 09b86d11
......@@ -203,6 +203,11 @@ class RelativeImports(unittest.TestCase):
self.assertEqual(mod.__name__, 'crash.mod')
self.relative_import_test(create, globals_, callback)
def test_relative_import_no_globals(self):
# No globals for a relative import is an error.
with self.assertRaises(KeyError):
import_util.import_('sys', level=1)
def test_main():
from test.support import run_unittest
......
......@@ -10,6 +10,9 @@ What's New in Python 3.3.0 Alpha 3?
Core and Builtins
-----------------
- Issue #14592: Attempting a relative import w/o __package__ or __name__ set in
globals raises a KeyError.
- Issue #10854: The ImportError raised when an extension module on Windows
fails to import now uses the new path and name attributes from
Issue #1559549.
......
......@@ -2355,8 +2355,9 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals,
}
}
else {
package = _PyDict_GetItemIdWithError(globals, &PyId___name__);
package = _PyDict_GetItemId(globals, &PyId___name__);
if (package == NULL) {
PyErr_SetString(PyExc_KeyError, "'__name__' not in globals");
goto error;
}
else if (!PyUnicode_Check(package)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment