[Python-Dev] 2to3 and print function

Guido van Rossum guido at python.org
Thu Mar 20 07:15:20 CET 2008


On Wed, Mar 19, 2008 at 10:27 PM, David Wolever <wolever at cs.toronto.edu> wrote:
> On 19-Mar-08, at 6:44 PM, Collin Winter wrote:
>  > You can pass -p to refactor.py to fix this on a per-run basis. See
>  > r58002 (and the revisions it mentions) for a failed attempt to do this
>  > automatically.
>
>  So, correct me if I'm wrong, but the relevant code is this:
>  -            try:
>  -                tree = self.driver.parse_string(data)
>  -            except parse.ParseError, e:
>  -                if e.type == token.EQUAL:
>  -                    tree = self.printless_driver.parse_string(data)
>  -                else:
>  -                    raise
>
>  Why not, instead of trying both parsers, scan for a __future__
>  import, then do the Right Thing based on that?

Different use cases.

Auto-detection based on __future__ would be a good thing to have
(assuming that __future__ statement has actually been implemented :-).

But the -p lag is for code that has already been converted to 3.0 (as
far as print statements are concerned anyway) and hence doesn't have
__future__ statements. This is mostly used in the standard library,
where sometimes it is useful to run selected fixers again after a
merge. :-)

-- 
--Guido van Rossum (home page: http://www.python.org/~guido/)


More information about the Python-Dev mailing list