Python 2 to 3 conversion - embrace the pain
Terry Reedy
tjreedy at udel.edu
Mon Mar 16 13:47:41 EDT 2015
On 3/16/2015 5:13 AM, INADA Naoki wrote:
> Another experience is porting Flask application in my company from
> Python 2 to Python 3.
> It has 26k lines of code and 7.6k lines of tests.
>
> Since we don't need to support both of PY2 and PY3, we used 2to3.
> 2to3 changes 740 lines.
That is less than 3% of the lines. Were any changes incorrect? How
many lines *not* flagged by 2to3 needed change?
> I had to replace google-api-client with
> requests+oauthlib since
> it had not supported PY3 yet.
Other than those needed for this change, which 2to3 could not anticipate
or handle?
> After that, we encountered few trouble with untested code. But Porting
> effort is surprisingly small.
> We're happy now with Python 3. We can write non-ascii string to log
> without fear of UnicodeError.
> We can use csv with unicode without hack.
People who use ascii only or perhaps one encoding everywhere severely
underestimate the benefit of unicode strings (and utf-8) everywhere.
> Porting *modern* *application* code to *PY3 only* is easy, while
> porting libraries on the edge of
> bytes/unicode like google-api-client to PY2/3 is not easy.
>
> I think application developers should use *only* Python 3 from this year.
> If we start moving, more library developers will be able to start
> writing Python 3 only code from next year.
--
Terry Jan Reedy
More information about the Python-list
mailing list