Please consider adding PyPy Trove classifiers, because apparently black works fine! At least on the recent PyPy (I tested PyPy3.6 v7.0 on macOS). I used version 18.9b0 of black. See https://pypy.org/download.html
When working on a fix for #2755 I noticed that tags are being handled that cannot be used anyway, e.g. tags of disconnected changesets. Similarly, per-branch tags should be constrained to the checked out branch.