CI: pin versions of all testing tools & fix build #25
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Previously we had pinned versions of the test suite's
dependencies, but not additional testing tools such as black and
pylint. We should also pin the version of those, as otherwise new
versions of the tools can be released and break our CI without
warning.
Add all such tools to test-requirements.txt. Note that there is
a downside here that some requirements are being installed for
environments which don't need them. This could be fixed by
maintaining more requirements files (e.g. test-requirements-static.txt,
test-requirements-docs.txt, ...), but this doesn't seem worth the
complexity.
This change also has a couple of side-effects:
allows tox.ini to be simplified, as there are no longer several
different methods of installing dependencies
fixes container image build, which was broken due to dataclasses and
idna-ssl missing from requirements.txt; it did not show up in any of
the tox envs previously because other dependencies listed in those envs
happen to install these packages.
Note also that dataclasses must be explicitly listed as a dependency
only for Python versions less than 3.7, as it is not installable on
later versions of Python. This does not affect CI, but could impact
developers using newer versions of Python locally.