summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/ref/ref6.tex7
-rw-r--r--Python/compile.c3
2 files changed, 8 insertions, 2 deletions
diff --git a/Doc/ref/ref6.tex b/Doc/ref/ref6.tex
index 008cf1c..3f21479 100644
--- a/Doc/ref/ref6.tex
+++ b/Doc/ref/ref6.tex
@@ -498,7 +498,12 @@ begin.
The first form of \keyword{import} statement binds the module name in the
local namespace to the module object, and then goes on to import the
next identifier, if any. If the module name is followed by \keyword{as},
-the name following \keyword{as} is used as the local name for the module.
+the name following \keyword{as} is used as the local name for the module. To
+avoid confusion, you cannot import sub-modules 'as' a different
+local name. So 'import module as m' is legal, but 'import module.submod as
+s' is not. The latter should be written as 'from module import submod as s',
+see below.
+
The \keyword{from} form does not bind the module name: it goes through the
list of identifiers, looks each one of them up in the module found in step
(1), and binds the name in the local namespace to the object thus found.
diff --git a/Python/compile.c b/Python/compile.c
index 47445d0..7316790 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -2139,7 +2139,8 @@ com_import_stmt(struct compiling *c, node *n)
com_addopname(c, IMPORT_NAME, CHILD(subn, 0));
com_push(c, 1);
if (NCH(subn) > 1) {
- if (strcmp(STR(CHILD(subn, 1)), "as") != 0) {
+ if (strcmp(STR(CHILD(subn, 1)), "as") != 0 ||
+ NCH(CHILD(subn, 0)) > 1) {
com_error(c, PyExc_SyntaxError,
"invalid syntax");
return;