"Once we're at a Django 2.6 minimum supported version, using 2to3 to maintain parallel implementations becomes a lot easier."
As much as I admire Russ, and I do, I don't think that the above statement is correct. For a short time on the pywin32 team we tried to "maintain parallel implementations" and found that it was a mistake we had to undo. The correct approach is to maintain a SINGLE implementation -- in Python 2 format -- and use 2to3 as a tool when the code happens to be running on Python 3+. 2to3 should be run by distutils when it detects that setup.py is being run by Python3. It should NOT be run manually by a human. Then, some years in the future when the last Python 2.7 engine fades away, you will run 2to3 once for the last time, and THEN maintain in Python 3 format. You do NOT write your code with print() functions, etc.. Simply roll any needed refactoring into the trunk at the earliest opportunity, and make sure you don't break them during maintenance. That's my advice from my experience. The code I am supporting runs on any version of Python from 2.3 thru 3.1, including IronPython. -- Vernon Cole -- You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-develop...@googlegroups.com. To unsubscribe from this group, send email to django-developers+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-developers?hl=en.