diff options
author | Eric Smith <eric@trueblade.com> | 2008-03-20 23:02:08 (GMT) |
---|---|---|
committer | Eric Smith <eric@trueblade.com> | 2008-03-20 23:02:08 (GMT) |
commit | 87824086fa20e3f7bbb39dc8ee9d3ce70487dd98 (patch) | |
tree | 6c61ebeee2100ff264c4fd81f627fb984240d76e | |
parent | 2eb2c7c3848fdc16a2c6bad6660411d0cf1c5208 (diff) | |
download | cpython-87824086fa20e3f7bbb39dc8ee9d3ce70487dd98.zip cpython-87824086fa20e3f7bbb39dc8ee9d3ce70487dd98.tar.gz cpython-87824086fa20e3f7bbb39dc8ee9d3ce70487dd98.tar.bz2 |
Add __future__ import for print_function. It's a no-op in 3.0, but it needs to not be a syntax error.
Closes issue 2436.
-rw-r--r-- | Include/code.h | 1 | ||||
-rw-r--r-- | Include/compile.h | 1 | ||||
-rw-r--r-- | Lib/__future__.py | 6 | ||||
-rw-r--r-- | Lib/test/test_print.py | 7 | ||||
-rw-r--r-- | Python/future.c | 2 |
5 files changed, 17 insertions, 0 deletions
diff --git a/Include/code.h b/Include/code.h index 56d6cb5..e576bbb 100644 --- a/Include/code.h +++ b/Include/code.h @@ -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. diff --git a/Include/compile.h b/Include/compile.h index 2bde6fb..391c710 100644 --- a/Include/compile.h +++ b/Include/compile.h @@ -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 *, diff --git a/Lib/__future__.py b/Lib/__future__.py index d8e14d1..ea14bf3 100644 --- a/Lib/__future__.py +++ b/Lib/__future__.py @@ -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) diff --git a/Lib/test/test_print.py b/Lib/test/test_print.py index 10ef60a..4d347ed 100644 --- a/Lib/test/test_print.py +++ b/Lib/test/test_print.py @@ -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) diff --git a/Python/future.c b/Python/future.c index 80a3006..d6333ff 100644 --- a/Python/future.c +++ b/Python/future.c @@ -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"); |