I finally have the swig-py3 branch in a state that I believe is ready to be merged into trunk. All the tests pass under python 2 and 3 now, and I successfully tested viewvc 1.1.26 against the python 2 bindings. In order to have shared code for python 2 and 3, there were a fair number of substitutions of old ways of doing things, to ways that were more compatible with both python 2.7 and 3. Where that wasn't possible, explicit feature or version detection was employed. However, there was not really substantive changes, and should have no changes in the way the bindings actually work.
The two biggest changes from Python 2 perspective:
1. Switching SWIG out of "classic" mode. The means that all the generated classes are now "new-style" classes, and use properties for most attribute access.
2. Introduction of py3c compatibility library dependency.
#1 should really only be an issue if a client subclassed one of the swig classes. This doesn't seem likely to me, as the swig classes already do not look very inheritance friendly, but I would definitely expect some differences to subclasses in the old-style to new-style class migration.
The biggest hole in my testing is Windows. I am not a Windows developer, so hopefully someone that is could take a look. I'm betting that there is at least something that needs to change in order to correctly locate and use the py3c library.
So if you get a chance, take a look and let me know if you agree that it is ready to merge.