A handful of tools to make using mypy a little easier.
pip install mypytools
mypy_server.py is a multithreaded typechecking server for MyPy. It loads a dependency graph for the Python files in a set of directories. When one of the files is modified, it typechecks that file along with all files which depend on it. You can configure it for your project by adding a
.mypy_server file at the root of your project. See the example in this repository.
Linter for new annotations
check_mypy_annotations.py is a script that can be used in combination with a linter to encourage users to add type annotations to functions they've modified. It compares the current
master, attributes all new lines back to their associated function, and prints an error if that function doesn't have type annotations.
print_mypy_coverage.py is a script to print how many functions have MyPy type annotations. It consumes a list of Python files which it scans for annotations and then prints a directory hierarchy along with the associated annotation coverage.
Custom arcanist linter
MypyLinter.php is a custom linter for the arcanist CLI for phabricator. It interacts directly with
check_mypy_annotations.py to give
arc lint MyPy superpowers.