summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_import.py12
-rw-r--r--Misc/NEWS3
-rw-r--r--Python/import.c3
3 files changed, 17 insertions, 1 deletions
diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py
index f47c6c9..da4fe3b 100644
--- a/Lib/test/test_import.py
+++ b/Lib/test/test_import.py
@@ -431,6 +431,18 @@ class RelativeImportTests(unittest.TestCase):
self.assertRaises(ValueError, check_absolute)
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")
+
def test_main(verbose=None):
run_unittest(ImportTests, PycRewritingTests, PathsTests, RelativeImportTests)
diff --git a/Misc/NEWS b/Misc/NEWS
index b81eb70..1c4e174 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@ What's New in Python 2.7 Release Candidate 1?
Core and Builtins
-----------------
+- Issue #7902: When using explicit relative import syntax, don't try
+ implicit relative import semantics.
+
- Issue #7079: Fix a possible crash when closing a file object while using
it from another thread. Patch by Daniel Stutzbach.
diff --git a/Python/import.c b/Python/import.c
index 7abe679..990ee51 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -2134,7 +2134,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;