Mypy 0.770 released
10 March 2020: Mypy 0.770 was released. This release includes various fixes and improvements and improved type inference in some cases. Read the blog post for the details. -Michael J. Sullivan
Mypy 0.760 released
17 December 2019: Mypy 0.760 was released. This release includes various fixes and improvements, and a type signature suggestion feature for tools. Read the blog post for the details. -Jukka Lehtosalo
Mypy 0.750 released
29 November 2019: Mypy 0.750 was released. This release has better support for self-types, improved stub generator, experimental static inference of annotations, and other improvements and bug fixes. Read the blog post for more details. -Ivan Levkivskyi
Mypy 0.740 released
16 October 2019: Mypy 0.740 was released. This release adds type checking for str.format and improved checking of untyped functions. Read the blog post for more details. -Michael J. Sullivan
def fib(n): a, b = 0, 1 while a < n: yield a a, b = b, a+b
def fib(n: int) -> Iterator[int]: a, b = 0, 1 while a < n: yield a a, b = b, a+b
Migrate existing code to static typing, a function at a time. You can freely mix static and dynamic typing within a program, within a module or within an expression. No need to give up dynamic typing — use static typing when it makes sense. Often just adding function signatures gives you statically typed code. Mypy can infer the types of other variables.
Mypy type checks programs that have type annotations conforming to PEP 484. Getting started is easy if you know Python. The aim is to support almost all Python language constructs in mypy.
Mypy has a powerful, modern type system with features such as bidirectional type inference, generics, callable types, abstract base classes, multiple inheritance and tuple types.
Many commonly used libraries have stubs (statically typed interface definitions) that allow mypy to check that your code uses the libraries correctly.