summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorBrett Cannon <bcannon@gmail.com>2010-05-20 18:37:55 (GMT)
committerBrett Cannon <bcannon@gmail.com>2010-05-20 18:37:55 (GMT)
commiteb3cd301aea85de122c828afa6473bfc6c9eb10e (patch)
treea4d2c340158318d6d258e694ca87c3e38811a2fc /Python
parentb1556c537d7c49978fa40594a9c9f40c6f88cdde (diff)
downloadcpython-eb3cd301aea85de122c828afa6473bfc6c9eb10e.zip
cpython-eb3cd301aea85de122c828afa6473bfc6c9eb10e.tar.gz
cpython-eb3cd301aea85de122c828afa6473bfc6c9eb10e.tar.bz2
Turned out that if you used explicit relative import syntax
(e.g. from .os import sep) and it failed, import would still try the implicit relative import semantics of an absolute import (from os import sep). That's not right, so when level is negative, only do explicit relative import semantics. Fixes issue #7902. Thanks to Meador Inge for the patch.
Diffstat (limited to 'Python')
-rw-r--r--Python/import.c3
1 files changed, 2 insertions, 1 deletions
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;