[Python-Dev] from __future__ syntax changed

Tim Peters tim.peters at gmail.com
Tue Jan 31 06:53:26 CET 2006


[Guido van Rossum]
> It looks like the syntax for "from __future__ import ..." changes in
> Python 2.5. I was playing around with Cheetah, and it stumbled over a
> file with the following structure:
>> # comments
> """ docstring """
> __author__ = "..."
> __version__ = "..."
> from __future__ import generators
>> Python 2.2 throug 2.4 accept this fine.
>> Perhaps the AST tree enforces stricter syntax for what can precede a
> future statement? I think this should be fixed.

Peculiar. It wasn't intended that be allowed; PEP 236 spelled this out:
""""
In addition, all future_statments must appear near the top of the
module. The only lines that can appear before a future_statement are:
 + The module docstring (if any).
 + Comments.
 + Blank lines.
 + Other future_statements.
""""
That isn't frivolous, since a __future__ gimmick may affect the
legality of binding statements (as in your example) or other import
statements, etc -- it was deliberate that only blank lines, comments
and (maybe) a docstring could appear before the first future statment.
 I'd call this a bug in 2.2-2.4.
Note too that Tools/scripts/cleanfuture.py in 2.4 doesn't change that
example, because it doesn't believe it contains any __future__
statements (cleanfuture.py follows the PEP's syntax).


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /