Some Python 2 packages have circular (build-)dependencies, making it
impossible to remove them one at a time without breaking anything.
One such cycle is seaborn, sphinx-gallery and matplotlib2 (#940873); I
have not attempted to systematically check for them.
How should these be dealt with?
--- Cut the cycle by removing one of the dependencies.
This may mean skipping (some of) the tests, as Python build dependencies
are often actually test dependencies. There might be cases where it
isn't reasonably possible at all.
(Related question: if a package with a large test suite is being
uploaded anyway, should we consider removing the Python 2 tests just to
save buildd/debci resources?)
--- Prepare all the required packages in salsa / experimental, then
remove the entire cycle at once.
This is easy if the cycle is small and otherwise ready to remove, but if
one member has a big dependency tree, the whole cycle might have to stay
for some time.
(Related question: does it make sense to create no-Python2 salsa
branches of one's regular modules (particularly any that need nontrivial
changes) and mark them "please upload when the reverse dependencies have
been cleared", even if they aren't part of a cycle?)