]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Add __future__ import for print_function. It's a no-op in 3.0, but it needs to not...
authorEric Smith <eric@trueblade.com>
Thu, 20 Mar 2008 23:02:08 +0000 (23:02 +0000)
committerEric Smith <eric@trueblade.com>
Thu, 20 Mar 2008 23:02:08 +0000 (23:02 +0000)
Closes issue 2436.

Include/code.h
Include/compile.h
Lib/__future__.py
Lib/test/test_print.py
Python/future.c

index 56d6cb50eec27ddbedc7db3da18ea624bf149ab9..e576bbb14f32cc0a2287307a1d55c52981913ff5 100644 (file)
@@ -48,6 +48,7 @@ typedef struct {
 #define CO_FUTURE_DIVISION     0x2000
 #define CO_FUTURE_ABSOLUTE_IMPORT 0x4000 /* do absolute imports by default */
 #define CO_FUTURE_WITH_STATEMENT  0x8000
+#define CO_FUTURE_PRINT_FUNCTION  0x10000
 #endif
 
 /* This should be defined if a future statement modifies the syntax.
index 2bde6fb56f6e85cc62fcfbae18e443cf39d88c5b..391c7104fbf9a5ee3ebff957b99856ed6fc44564 100644 (file)
@@ -24,6 +24,7 @@ typedef struct {
 #define FUTURE_DIVISION "division"
 #define FUTURE_ABSOLUTE_IMPORT "absolute_import"
 #define FUTURE_WITH_STATEMENT "with_statement"
+#define FUTURE_PRINT_FUNCTION "print_function"
 
 struct _mod; /* Declare the existence of this type */
 PyAPI_FUNC(PyCodeObject *) PyAST_Compile(struct _mod *, const char *,
index d8e14d1573105a06f8e2884fb468cd08233960cb..ea14bf39ab12035b02652b597e3d50748dd1603a 100644 (file)
@@ -53,6 +53,7 @@ all_feature_names = [
     "division",
     "absolute_import",
     "with_statement",
+    "print_function",
 ]
 
 __all__ = ["all_feature_names"] + all_feature_names
@@ -66,6 +67,7 @@ CO_GENERATOR_ALLOWED = 0        # generators (obsolete, was 0x1000)
 CO_FUTURE_DIVISION   = 0x2000   # division
 CO_FUTURE_ABSOLUTE_IMPORT = 0x4000 # perform absolute imports by default
 CO_FUTURE_WITH_STATEMENT  = 0x8000   # with statement
+CO_FUTURE_PRINT_FUNCTION  = 0x10000   # print function
 
 class _Feature:
     def __init__(self, optionalRelease, mandatoryRelease, compiler_flag):
@@ -114,3 +116,7 @@ absolute_import = _Feature((2, 5, 0, "alpha", 1),
 with_statement = _Feature((2, 5, 0, "alpha", 1),
                           (2, 6, 0, "alpha", 0),
                           CO_FUTURE_WITH_STATEMENT)
+
+print_function = _Feature((2, 6, 0, "alpha", 2),
+                          (3, 0, 0, "alpha", 0),
+                          CO_FUTURE_PRINT_FUNCTION)
index 10ef60a7efe8617b71d4e885257dc1d43a2a0692..4d347ed0fcaa23139355c74df9f993fa05bbd48f 100644 (file)
@@ -1,6 +1,8 @@
 """Test correct operation of the print function.
 """
 
+from __future__ import print_function
+
 import unittest
 from test import test_support
 
@@ -98,6 +100,11 @@ class TestPrint(unittest.TestCase):
         x('*\n', (ClassWith__str__('*'),))
         x('abc 1\n', (ClassWith__str__('abc'), 1))
 
+#        # 2.x unicode tests
+#        x(u'1 2\n', ('1', u'2'))
+#        x(u'u\1234\n', (u'u\1234',))
+#        x(u'  abc 1\n', (' ', ClassWith__str__(u'abc'), 1))
+
         # errors
         self.assertRaises(TypeError, print, '', sep=3)
         self.assertRaises(TypeError, print, '', end=3)
index 80a3006a3d8f1a6844525160a050495a179b87d9..d6333ff63e6f62f9f74992f13356593751ea974d 100644 (file)
@@ -33,6 +33,8 @@ future_check_features(PyFutureFeatures *ff, stmt_ty s, const char *filename)
                        continue;
                } else if (strcmp(feature, FUTURE_WITH_STATEMENT) == 0) {
                        continue;
+               } else if (strcmp(feature, FUTURE_PRINT_FUNCTION) == 0) {
+                       continue;
                } else if (strcmp(feature, "braces") == 0) {
                        PyErr_SetString(PyExc_SyntaxError,
                                        "not a chance");