python 2 to 3 converter

Chris Angelico rosuav at gmail.com
Mon Dec 9 13:19:46 EST 2019


On Tue, Dec 10, 2019 at 5:05 AM songbird <songbird at anthive.com> wrote:
>
> jfong at ms4.hinet.net wrote:
> ...
> > Even string is hard to be handled by the AI:-)
> >
> > Quoted from https://portingguide.readthedocs.io/en/latest/strings.html
> > " ... This means that you need to go through the entire codebase, and decide which value is what type. Unfortunately, this process generally cannot be automated."
>
>   i don't agree.  if the language is already parsed then
> you have the strings.  the contents of the strings will
> have to be finite if they are fixed strings.  so to convert
> a fixed string you can choose a type for the value and run
> a test to see if it works.  if it does then you've picked
> the correct type, if it doesn't you pick the next type.
> there are only a finite number of types.
>

Here's an example piece of code.

sock = socket.socket(...)
name = input("Enter your username: ")
code = input("Enter the base64 code: ")
code = base64.b64decode(code)
sock.write("""GET /foo HTTP/1.0
Authentication: Demo %s/%s

""" % (name, code))
match = re.search(r"#[A-Za-z0-9]+#", sock.read())
if match: print("Response: " + match.group(0))

Your challenge: Figure out which of those strings should be a byte
string and which should be text. Or alternatively, prove that this is
a hard problem. There are only a finite number of types - two, to be
precise - so by your argument, this should be straightforward, right?

ChrisA


More information about the Python-list mailing list