It has definitely been a painful process to port from python 2 to 3. We have one developer who has been pushing hard for this, and while it may not be a defensible business position we believe it's the right thing as members of the community.
There are some nontrivial improvements in Python 3 (async) that we want, but more than that we don't want python to split and languish. We think that by taking a step into python 3 (and porting our remaining dependencies) we can make a small dent.
It is sad. There is an expression in Russian, that in English sounds something like "hedgehogs were crying, but kept on chewing the cactus". Best of luck to your team.
OK, no. Most modules/libraries are ported to Python 3. The minor ones that aren’t are those that are dead upstream, and you shouldn’t be using them, and/or they should be easy to port yourself.
I really think the real reason is that people, especially English-speaking, but others, too, have been sticking their collective heads in the sand about this ASCII/Unicode situation for far too long. If, on the other hand, you started to use Unicode strings as soon as possible in Python 2, your Python 3 “port” could be two additional lines:
if sys.version_info.major == 2:
str = unicode
Oh yeah, the future_builtins module does not exist anymore (for obvious reasons), so its import needs to be wrapped in a try-except clause:
try:
from future_builtins import *
except ImportError:
pass
So call it five additional lines. That it literally all the porting I had to do to make two Python 2 programs completely runnable in Python 3 and Python 2, unaltered.
The problem is not Python 3. The problem is people using byte strings and Python 2’s implicit conversions of them without actually understanding what a string is.
4 comments
[ 3.4 ms ] story [ 18.9 ms ] threadThere are some nontrivial improvements in Python 3 (async) that we want, but more than that we don't want python to split and languish. We think that by taking a step into python 3 (and porting our remaining dependencies) we can make a small dent.
I really think the real reason is that people, especially English-speaking, but others, too, have been sticking their collective heads in the sand about this ASCII/Unicode situation for far too long. If, on the other hand, you started to use Unicode strings as soon as possible in Python 2, your Python 3 “port” could be two additional lines:
Oh yeah, the future_builtins module does not exist anymore (for obvious reasons), so its import needs to be wrapped in a try-except clause: So call it five additional lines. That it literally all the porting I had to do to make two Python 2 programs completely runnable in Python 3 and Python 2, unaltered.The problem is not Python 3. The problem is people using byte strings and Python 2’s implicit conversions of them without actually understanding what a string is.