Python 3.5 Transition
For Ubuntu 16.04 LTS and Debian Stretch, we want to transition to Python 3.5 as the default (and possibly only) Python 3 version.
There are some other interesting issues in performing this transition. Many packages haven't been built for a while, and just get copied to the new distro version's archive, so they are only rebuilt during transitional events such as this one. One of the most pernicious problems is circular dependencies. Because all packages in the cycle need to be rebuilt, we have to break the cycle with a temporary upload, and then re-enable the cycle causing problem. Ideally of course, there would be no cycles, but that's not what we see in practice.
Here are some cycles we've seen, along with how we broke them. The binary package is listed first, with the source package (where different) in parentheses.
python-sphinx (sphinx) -> python3-gi (pygobject) -> python3-cairo (py3cairo) -> python-sphinx
sphinx only needs python3-gi for the test suite, so the cycle was broken by disabling this particular test in the transitional upload to the rebuild PPA for sphinx. Dmitry Shachnev says "Search for 'jstest' in debian/rules and comment out that line".
python3-gi (pygobject) -> gnome-pkg-tools -> python3-gi
gnome-pkg-tools uses Python 3 only in its pkg-gnome-compat-desktop-file file, which isn't critical for pygobject. Current rebuild solution is to remove the python3 and python3-gi Depends in pkg-gnome-tool's debian/control.in file, upload that, then rebuild pygobject, then re-upload a fixes pkg-gnome-tool. Reported as Debian bug #790782