But a lot of modern Python code still depends on it. This is a problem because as the years drag on, we will begin to forget the differences. The data for conversions can become lost. It is important to update now while we still remember. While it'd be nice to just tell everyone to update their modules, transitions are not always simple (I should know). So the only way to resolve Python2 dependencies is to send PRs to projects. Then maintainers will become free to shed their Python2 support, or at least Python3 code can be completely forked if legacy support becomes a concern, and Python3 code can depend on Python3 code either way, which can be kept up to date and maintained by new developers who have never read a line of Python2 before.
This list focuses on Python modules that continue to support or are directly enmeshed with the Python3 ecosystem in some way. Excellent examples are RPython and Twisted: RPython uses 2.7 Python, but is critical to PyPy, which supports 3.x Pythons. Twisted supports 3.x Pythons, but only with a restricted set of features. Maintainers continue to support both ends because tossing their old code would simply be tantamount to ending the project entirely.
Please do not yell at maintainers to simply drop support for 2.7. Yes, it might force people to migrate, but this list is written with the belief that maintainers should have more options, not less.
Usually, the work is harder than simply running 2to3
on things. However, running 2to3 is a good start. Try here: http://python3porting.com/2to3.html
Not a small job. Suggest forking and implementing in pieces.
- PyPy's RPython: https://bitbucket.org/pypy/pypy/src/default/
- Twisted: https://www.twistedmatrix.com -- Twisted's Roadmap Tickets: https://twistedmatrix.com/trac/query?status=assigned&status=new&status=reopened&milestone=Python-3.x&group=status&order=priority&row=description