Other useful tools/libraries
March 19, 2026 ยท View on GitHub
This is a file to keep track of all of the type checkers that exist for Python. They are grouped into one of four catagories classified by whether or not they use PEP 484 syntax, and if they are static or dynamic.
PEP 484 syntax
Static
- mypy
- pyrefly
- pyright
- ty
- zuban
- PyCharm (IDE inference engine)
- pyre (superseded by pyrefly)
- pytype (abandoned)
Dynamic/Runtime
- enforce
- typeguard
- typo
- beartype
- ducktype (Python 2 only?)
- strictconf
- pytypecheck
- pytypechecker
- strict-hint
- typesentry
- runtime_type_checks
- checktype
- py_type
- magic-constraints
- pydantic
- typical
- typity
- runtype
Other syntax
Static
Dynamic/Runtime
- icanhaztypecheck
- stifle
- compliance
- pavlov
- dtype-decorate
- safetynet
- promises
- promises
- tychonov
- accepts.py
- python-typeutils
- python-typesafe (Python 2 only?)
- enforce_types
- typecheck.py
- typist
- python-typesafety
- typecheck
- typedecorator
- pysynthetic
- TypeChecker
- type_check.py
- relaxed_types
- obiwan
Other useful tools/libraries
- stubgen (not to be confused with mypy's)
- typeassert
- typing_inspect