[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