I understand this is meant as a side-project for the author to learn new stuff. From his blog:
"It’s an online tool that I built for myself, and I hope other people can get some use out of it, I hav ported a lot of code in pyhon2 to python3 and I thouhgt thatthis web can help other people and also, it was a good oportunity for my, because I learned javascript and bootstrap for do it."
I guess this is a sample project, that looks like a good portfolio piece, but for real applications it has all the downsides of an online tool and none of the upsides
Sure...that's a different thing though. Python 3's choice to introduce new types and change behavior of existing types means no automated tool can really decide what to do.
The snippet I posted is a little different in that it runs on both Python 2 as well as 3, but the 2to3 tools choke on it.
I'm still irritated by this specific case because my code and documentation used s.encode("hex") often, and it took a while to fix them all. Especially as the original code used both str and unicode hex-encoded values, so I couldn't drop in binascii. I ended up adding a C extension function.
python2 prints "set([0, 1])" while python3 prints "{0,1}".
Is it supposed to normalize the str() so it matches Python2?
For that matter, the str() for floats has changed:
% python
Python 2.7.10 (default, Jul 30 2016, 19:40:32)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print(-1.0000000000000002)
-1.0
>>>
% python3
Python 3.6.0 (v3.6.0:41df79263a11, Dec 22 2016, 17:23:13)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print(-1.0000000000000002)
-1.0000000000000002
20 comments
[ 4.7 ms ] story [ 55.2 ms ] thread2to3 "works" on whole projects and I'm not sending my code whoknowswhere.
I'll keep calling 2to3
maybe the code is wrong?
Is there a tool which knows to translate this to:
Even worse, if the string isn't known to be a byte string or ASCII unicode string, it's something like:The snippet I posted is a little different in that it runs on both Python 2 as well as 3, but the 2to3 tools choke on it.
I'm still irritated by this specific case because my code and documentation used s.encode("hex") often, and it took a while to fix them all. Especially as the original code used both str and unicode hex-encoded values, so I couldn't drop in binascii. I ended up adding a C extension function.
python2 prints "set([0, 1])" while python3 prints "{0,1}".
Is it supposed to normalize the str() so it matches Python2?
For that matter, the str() for floats has changed: