I've referenced a video from Anthony Sotile in passing conversation several times. Walking through his gradual typing process has really helped me understand typing better, and has helped me make some projects better over time rather than getting slammed with typing errors.
Run Mypy as is, don't get fancy yet. This will not reach into any functions unless they are alreay explicitly typed. It will not enforce you to type them either.
pip install mypy mypy . # or your specific project to avoid .venvs mypy src # or a single file mypy my-script.py
Next we will add
check-untyped-defs, this will start checking inside
functions that are not typed. To add this to your config create a
setup.cfg with the following.
[mypy] check_untyped_defs = True
The final stage to this series is to add
disallow_untyped_defs. This will
start requiring all of your functions to be type hinted. This one is probably
the toughest, because as you type functions mypy can uncover more issues for
you to fix. Often times the list of errors grows before it shrinks.
[mypy] check_untyped_defs = True disallow_untyped_defs = True
Make sure that you watch Anthony's video, give him a sub, he deserves it for all the great things he is doing for the python community.