Live data from Hacker News

Automated Python 2 to 3 code translation

pythonconverter.com

11–20 of 21 posts

Re: Automated Python 2 to 3 code translation

#15

I don't mean to be negative, but how is this better than just using the `2to3` tool that already ships with Python?

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

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

Re: Automated Python 2 to 3 code translation

#16

I don't mean to be negative, but how is this better than just using the `2to3` tool that already ships with Python?

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."

Re: Automated Python 2 to 3 code translation

#17
post #14

a = "test" if a

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),))

"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)

Re: Automated Python 2 to 3 code translation

#18

Earlier quoted context omitted.

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

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

Even the Jedi felt that burn.

Re: Automated Python 2 to 3 code translation

#19
post #17
post #14

Earlier quoted context omitted.

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),))

"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)

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.

Re: Automated Python 2 to 3 code translation

#20
post #19
post #17

Earlier quoted context omitted.

"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)

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.

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.

Post reply on HN