Apply SF patch #101135, adding 'import module as m' and 'from module import
name as n'. By doing some twists and turns, "as" is not a reserved word.
There is a slight change in semantics for 'from module import name' (it will
now honour the 'global' keyword) but only in cases that are explicitly
undocumented.
diff --git a/Lib/test/output/test_pkg b/Lib/test/output/test_pkg
index 4cb503e..4e67f8c 100644
--- a/Lib/test/output/test_pkg
+++ b/Lib/test/output/test_pkg
@@ -36,3 +36,10 @@
t6.eggs loading
['__all__', '__builtins__', '__doc__', '__file__', '__name__', '__path__', 'eggs', 'ham', 'spam']
['eggs', 'ham', 'spam', 't6']
+running test t7
+t7 loading
+['__builtins__', '__doc__', '__file__', '__name__', '__path__']
+['__builtins__', '__doc__', '__file__', '__name__', '__path__']
+t7.sub.subsub loading
+['__builtins__', '__doc__', '__file__', '__name__', '__path__', 'spam']
+t7.sub.subsub.spam = 1
diff --git a/Lib/test/test_pkg.py b/Lib/test/test_pkg.py
index fd22612..a99da35 100644
--- a/Lib/test/test_pkg.py
+++ b/Lib/test/test_pkg.py
@@ -165,6 +165,33 @@
print dir(t6)
print dir()
"""),
+
+ ("t7", [
+ ("t7.py", "print 'Importing t7.py'"),
+ ("t7", None),
+ ("t7 __init__.py", "print __name__, 'loading'"),
+ ("t7 sub.py", "print 'THIS SHOULD NOT BE PRINTED (sub.py)'"),
+ ("t7 sub", None),
+ ("t7 sub __init__.py", ""),
+ ("t7 sub subsub.py", "print 'THIS SHOULD NOT BE PRINTED (subsub.py)'"),
+ ("t7 sub subsub", None),
+ ("t7 sub subsub __init__.py", "print __name__, 'loading'; spam = 1"),
+ ],
+"""
+t7, sub, subsub = None, None, None
+import t7 as tas
+print dir(tas)
+assert not t7
+from t7 import sub as subpar
+print dir(subpar)
+assert not t7 and not sub
+from t7.sub import subsub as subsubsub
+print dir(subsubsub)
+assert not t7 and not sub and not subsub
+from t7.sub.subsub import spam as ham
+print "t7.sub.subsub.spam =", ham
+assert not t7 and not sub and not subsub
+"""),
]