[Python-checkins] r67030 - in python/trunk: Lib/test/test_future.py Misc/NEWS Parser/parser.c

benjamin.peterson python-checkins at python.org
Sun Oct 26 21:21:14 CET 2008


Author: benjamin.peterson
Date: Sun Oct 26 21:21:13 2008
New Revision: 67030

Log:
fix __future__ imports when multiple features are given

Modified:
   python/trunk/Lib/test/test_future.py
   python/trunk/Misc/NEWS
   python/trunk/Parser/parser.c

Modified: python/trunk/Lib/test/test_future.py
==============================================================================
--- python/trunk/Lib/test/test_future.py	(original)
+++ python/trunk/Lib/test/test_future.py	Sun Oct 26 21:21:13 2008
@@ -89,19 +89,23 @@
         #       the parser hack disabled. If a new keyword is introduced in
         #       2.6, change this to refer to the new future import.
         try:
-            exec "from __future__ import division, with_statement; with = 0"
+            exec "from __future__ import print_function; print 0"
         except SyntaxError:
             pass
         else:
             self.fail("syntax error didn't occur")
 
         try:
-            exec "from __future__ import (with_statement, division); with = 0"
+            exec "from __future__ import (print_function); print 0"
         except SyntaxError:
             pass
         else:
             self.fail("syntax error didn't occur")
 
+    def test_multiple_features(self):
+        test_support.unload("test.test_future5")
+        from test import test_future5
+
 
 def test_main():
     test_support.run_unittest(FutureTest)

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Sun Oct 26 21:21:13 2008
@@ -12,6 +12,9 @@
 Core and Builtins
 -----------------
 
+- Issue #4209: Enabling unicode_literals and the print_function in the same
+  __future__ import didn't work.
+
 - Using ``nonlocal`` as a variable name will now raise a Py3k SyntaxWarning
   because it is a reserved word in 3.x.
 

Modified: python/trunk/Parser/parser.c
==============================================================================
--- python/trunk/Parser/parser.c	(original)
+++ python/trunk/Parser/parser.c	Sun Oct 26 21:21:13 2008
@@ -206,13 +206,10 @@
 			char *str_ch = STR(CHILD(cch, 0));
 			if (strcmp(str_ch, FUTURE_WITH_STATEMENT) == 0) {
 				ps->p_flags |= CO_FUTURE_WITH_STATEMENT;
-				break;
 			} else if (strcmp(str_ch, FUTURE_PRINT_FUNCTION) == 0) {
 				ps->p_flags |= CO_FUTURE_PRINT_FUNCTION;
-				break;
 			} else if (strcmp(str_ch, FUTURE_UNICODE_LITERALS) == 0) {
 				ps->p_flags |= CO_FUTURE_UNICODE_LITERALS;
-				break;
 			}
 		}
 	}


More information about the Python-checkins mailing list