I noted that the test suite is BADLY BROKEN with Python3 in cherrypy3 right now. My patches don't make the situation spectacularly worse.
Also: we had a test that was broken in Python 2.6 (and lower) because it was using a unittest assert that was added in 2.7, confirming the fact that nobody bothers testing anything below Python 2.7 :)
Notes on code and style:
My purpose on this patch is to get rid of blocks of code that were needed for compatibility with Python<2.6 (which as you can imagine, was quite a bit of code). Having said that, the codebase is still "old style", and not idiomatic with current Python best practices. It has aged well tho, but after this patch lands, we can begin to modernize cherrypy's codebase (@decorators!, context managers!).
I wonder if it would be a good to idea to merge this in another branch first, just because of the size of the files that have been touched, OTOH most of the changes are pretty straight forward or docstrigs. Is there any comment on that? if no, then I'm a go with this pull request.
The changes are pretty straightforward. I think the difficult decision in this case is how we are going to handle the merge itself: will this be CherryPy 3.3? Or follow semver principles and jump forward to CherryPy 4.0?