* Python 3.8 minimum version
* Add type hints to all locations of the codebase
* Add py.typed
* Reduce risk of duplication by use of sets rather than lists
* Improve code quality via black, isort, mypy
* Reduce / remove legacy Python 2 support
* Improve performance via use of placeholders rather than format in logging
* Remove all uses of .format in favor of f-strings