summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_import.py11
-rw-r--r--Python/import.c3
2 files changed, 13 insertions, 1 deletions
diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py
index bf689ae..512759d 100644
--- a/Lib/test/test_import.py
+++ b/Lib/test/test_import.py
@@ -468,6 +468,17 @@ class RelativeImportTests(unittest.TestCase):
ns = dict(__package__=object())
self.assertRaises(ValueError, check_relative)
+ def test_absolute_import_without_future(self):
+ # If absolute import syntax is used, then do not try to perform
+ # a relative import in the face of failure.
+ # Issue #7902.
+ try:
+ from .os import sep
+ except ImportError:
+ pass
+ else:
+ self.fail("explicit relative import triggered an "
+ "implicit relative import")
class OverridingImportBuiltinTests(unittest.TestCase):
def test_override_builtin(self):
diff --git a/Python/import.c b/Python/import.c
index df00802..194e360 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -2385,7 +2385,8 @@ import_module_level(char *name, PyObject *globals, PyObject *locals,
if (parent == NULL)
return NULL;
- head = load_next(parent, Py_None, &name, buf, &buflen);
+ head = load_next(parent, level < 0 ? Py_None : parent, &name, buf,
+ &buflen);
if (head == NULL)
return NULL;