
Automated Python 2 to 3 code translation - julox
http://pythonconverter.com/
======
mherrmann
I don't mean to be negative, but how is this better than just using the `2to3`
tool that already ships with Python?

~~~
mathnode
But this web-2to3 is monetised with ads. The python community didn't think of
that.

~~~
raverbashing
They (the python community) doesn't require a library for left-padding. I
don't think they will fall for this

~~~
mathnode
Even the Jedi felt that burn.

------
raverbashing
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

I'll keep calling 2to3

------
4c2383f5c88e911

      a = "test"
      if a < 1:
          print(a)

~~~
tyingq
There are some corner cases that run fine in python but trip up 2to3 tools,
including this web based one. This code for example:

    
    
      print(set(x for x in range(2),))

~~~
eesmith
"asdf".encode("hex")

Is there a tool which knows to translate this to:

    
    
      import binascii
      binascii.b2a_hex(b"asdf")
    

Even worse, if the string isn't known to be a byte string or ASCII unicode
string, it's something like:

    
    
      import binascii
      binascii.b2a_hex(s.encode("ascii") if isinstance(s, str) else s)

~~~
tyingq
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.

~~~
eesmith
Ahh, yes, you're right.

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.

