On 3 Jun 2016 13:17, "Neil Schemenauer" <nas-pythonideas@arctrix.com> wrote:
>
> I'm nearly finished porting a decently size application from Python
> 2 to Python 3. It has been a lot of work. I am dubious as to
> whether the port was really the best use of time. I can imagine
> there is still millions, possibly billions of lines of Python 2 code
> that has not yet been converted. Further, my guess is the lines of
> Python 2 code are still growing faster than the lines of Python 3
> compatible code. IMHO, we need to do better in making it easier for
> people to port code.
>
> Here is a thought that occured to me. Create a patched version of
> Python 3.x, making a stepping stone version for people porting from
> Python 2. I know this would have been useful for me. Specific
> changes that would be helpful, all generating warnings so code can
> be eventually fixed:
>
> - comparision with None, smaller than all other types
Static type checkers should already be able to find these cases today, allowing them to be fixed incrementally pre-migration.
> - comparision of distinct types: use Python 2 behavior (i.e. order
> by type name)
As above (and we definitely won't revert it - it's one of the more appreciated changes reported by educators)
> - mixing of unicode strings with byte strings: decode/encode
> using latin-1
Converting with latin-1 would be even less correct than Python 2's behaviour of converting with ASCII (since it would allow arbitrary binary data to be implicitly interpreted as text)
Type checkers don't generally help here yet, but are expected to in the future.
> - dict objects: make keys() items() values() return special sequence
> that warns if iterated over multiple times or indexed as sequence
These can be mechanically converted by futurize in a way that avoids a redundant copy on Python 2 (modernize will insert a redundant call to list for the Python 2 case)
Cheers,
Nick.