[Python-3000] [Python-3000-checkins] r61682 - in python/branches/py3k: Include/code.h Include/compile.h Lib/__future__.py Lib/test/test_print.py Python/future.c
Eric Smith
eric+python-dev at trueblade.com
Fri Mar 21 02:41:09 CET 2008
Guido van Rossum wrote:
> Cool, I can live with that. Are all current __future__ statements
> still valid in 3.0?
I believe so, yes. But I'll double check.
>
> On Thu, Mar 20, 2008 at 5:55 PM, Eric Smith
> <eric+python-dev at trueblade.com> wrote:
>> Guido van Rossum wrote:
>> > Really? I though 2to3 was supposed to remove all __future__ imports?
>>
>> I was convinced when Christian pointed out the statement in
>> http://docs.python.org/lib/module-future.html:
>> "No feature description will ever be deleted from __future__."
>>
>> Admittedly, I implemented more than the minimum required for that, but
>> since the other future statements (absolute_import, with_statement,
>> etc.) were in py3k, I figured it would make sense to have print_function
>> behave the same way. Then, if we want to remove all __future__ imports
>> from py3k, it's more obvious (to me, anyway) how to extract them all.
>>
>>
>>
>> >
>> > On Thu, Mar 20, 2008 at 4:02 PM, eric.smith
>> > <python-3000-checkins at python.org> wrote:
>> >> Author: eric.smith
>> >> Date: Fri Mar 21 00:02:08 2008
>> >> New Revision: 61682
>> >>
>> >> Modified:
>> >> python/branches/py3k/Include/code.h
>> >> python/branches/py3k/Include/compile.h
>> >> python/branches/py3k/Lib/__future__.py
>> >> python/branches/py3k/Lib/test/test_print.py
>> >> python/branches/py3k/Python/future.c
>> >> Log:
>> >> 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.
>> >>
>> >> Modified: python/branches/py3k/Include/code.h
>> >> ==============================================================================
>> >> --- python/branches/py3k/Include/code.h (original)
>> >> +++ python/branches/py3k/Include/code.h Fri Mar 21 00:02:08 2008
>> >> @@ -48,6 +48,7 @@
>> >> #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.
>> >>
>> >> Modified: python/branches/py3k/Include/compile.h
>> >> ==============================================================================
>> >> --- python/branches/py3k/Include/compile.h (original)
>> >> +++ python/branches/py3k/Include/compile.h Fri Mar 21 00:02:08 2008
>> >> @@ -24,6 +24,7 @@
>> >> #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 *,
>> >>
>> >> Modified: python/branches/py3k/Lib/__future__.py
>> >> ==============================================================================
>> >> --- python/branches/py3k/Lib/__future__.py (original)
>> >> +++ python/branches/py3k/Lib/__future__.py Fri Mar 21 00:02:08 2008
>> >> @@ -53,6 +53,7 @@
>> >> "division",
>> >> "absolute_import",
>> >> "with_statement",
>> >> + "print_function",
>> >> ]
>> >>
>> >> __all__ = ["all_feature_names"] + all_feature_names
>> >> @@ -66,6 +67,7 @@
>> >> 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 @@
>> >> 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)
>> >>
>> >> Modified: python/branches/py3k/Lib/test/test_print.py
>> >> ==============================================================================
>> >> --- python/branches/py3k/Lib/test/test_print.py (original)
>> >> +++ python/branches/py3k/Lib/test/test_print.py Fri Mar 21 00:02:08 2008
>> >> @@ -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 @@
>> >> 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)
>> >>
>> >> Modified: python/branches/py3k/Python/future.c
>> >> ==============================================================================
>> >> --- python/branches/py3k/Python/future.c (original)
>> >> +++ python/branches/py3k/Python/future.c Fri Mar 21 00:02:08 2008
>> >> @@ -33,6 +33,8 @@
>> >> 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");
>> >> _______________________________________________
>> >> Python-3000-checkins mailing list
>> >> Python-3000-checkins at python.org
>> >> http://mail.python.org/mailman/listinfo/python-3000-checkins
>> >>
>> >
>> >
>> >
>>
>>
>
>
>
More information about the Python-3000
mailing list