This Dropbox Blog “Incrementally migrating over one million lines of code from Python 2 to Python 3”
has takeaways like this
Strings: str and bytes and unicode, oh my!
A brief summary: in Python 2, str is an alias for bytes, and unicode is the type for Unicode strings; in Python 3, str is the type for Unicode strings, bytes is for byte-strings, and unicode doesn’t exist.
but in particular refers to the Mypy static type-checking tool https://github.com/python/mypy
Travis CI runs a few automated checks like Codacy. Perhaps Mypy may add value if that has not been evaluated?