diff options
-rw-r--r-- | Lib/test/test_import.py | 11 | ||||
-rw-r--r-- | Python/import.c | 3 |
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; |