And now, another milestone. With set_literal being finished, I have now completed the 3to2 version of all 2to3 fixers that don’t deal with imports. Now, all that’s left (which is really the hardest part) is the standard library (stdlib). This will be split into two parts (one is easy, one is hard).
Part 1 (easy) is renaming every library module that was simply renamed in py3k. This is easy, because all I have to do is change one line, e.g.: “_pickle” will be changed into “cPickle”, everywhere, consistently.
Part 2 (hard) involves modules in py3k that are amalgamations of multiple modules (or parts from multiple modules) in python2.x. This is hard, because it will involve writing a hell of a lot of filters to determine whether (for example) the correct fix for “http.server” would be “BaseHTTPServer”, “CGIHTTPServer”, or “SimpleHTTPServer”, or some monstrous blend of all of them (would it ever?).
A (complete?) list of what the rest of my project will have to undo can be found in PEP 3108 — Standard Library Reorganization. (There are many more things listed in this PEP than what I need to deal with: much of it involves things that were completely removed from the language for py3k, so I don’t have to deal with those)
As posted before, I will not yet be tackling new things added in py3k with no backwards-compatible syntactical equivalent. That will be implemented first with warnings that point to what cannot be fixed (GSoC completion will require at least this by my current standard), then the option to raise the minimum version of python2.x supported, then (selective-case only) implementation of any features backported by third-parties that will require either the presence of that module on the host machine, or will fallback to that module distributed with lib3to2 (will require pythonx.y setup.py install).