stypy is a static type checker for Python programs without type annotations. stypy translates each Python program into Python code that type-checks the original program. The generated code replaces each variable with a type variable, evaluating expression types instead of their values. The generated type checker detects type errors in different tricky Python idioms, and ensures termination.
You can read a brief description of stypy.