mypy Python type checker
Light · Postcard
102 × 152 mm · PDF
Dark · Postcard
102 × 152 mm · PDF
Ink saver · Postcard
102 × 152 mm · PDF
Light · A4 landscape
297 × 210 mm · PDF
Dark · A4 landscape
297 × 210 mm · PDF
Ink saver · A4 landscape
297 × 210 mm · PDF
Light · A3 landscape
420 × 297 mm · PDF
Dark · A3 landscape
420 × 297 mm · PDF
Ink saver · A3 landscape
420 × 297 mm · PDF
Start here
mypy <file.py>
mypy .mypy -p <package>
mypy --strict .mypy --ignore-missing-imports .
mypy --install-types
x = 1 # type: ignore
dmypy run -- .Concepts
- Your code annotations
- Type checker no code runs
- Stubs and py.typed library types
- Errors file:line [code]
Running
mypy <file.py> <dir>
mypy .mypy -p <package>
mypy -m <module>
mypy --exclude '<regex>' .
mypy --explicit-package-bases .
mypy --python-executable <path> .
mypy -VStrictness
mypy --strict .mypy --check-untyped-defs .
mypy --disallow-untyped-defs .
mypy --disallow-incomplete-defs .
mypy --disallow-untyped-calls .
mypy --disallow-any-generics .
mypy --warn-return-any .
mypy --warn-unused-ignores .
mypy --warn-unreachable .
mypy --strict-equality .
Imports and stubs
mypy --ignore-missing-imports .
mypy --install-types
mypy --install-types --non-interactive .
pip install types-<name>
Output
mypy --pretty .mypy --show-error-codes .
mypy --no-color-output .
Config
mypy --config-file <path> .
mypy --warn-unused-configs .
mypy --disable-error-code <code> .
| File | Section |
|---|---|
mypy.ini |
[mypy] |
.mypy.ini |
[mypy] |
pyproject.toml |
[tool.mypy] |
setup.cfg |
[mypy] |
Ignoring and annotating
x = f() # type: ignore
x = f() # type: ignore[<code>]
# mypy: ignore-errors
reveal_type(<expr>)
assert isinstance(<x>, <type>)
if TYPE_CHECKING:
def f(x: int | None) -> str:
Daemon and cache
dmypy run -- <args>
dmypy recheckdmypy statusdmypy stoprm -rf .mypy_cache
Recipes
[tool.mypy]python_version = "3.12"strict = truewarn_unreachable = true[[tool.mypy.overrides]]module = ["yaml.*", "requests_toolbelt.*"]ignore_missing_imports = true
# start loose, tighten per package[tool.mypy]check_untyped_defs = true[[tool.mypy.overrides]]module = "myapp.core.*"disallow_untyped_defs = true
pip install mypy types-requestsmypy --warn-unused-configs --pretty -p myapp
dmypy run -- --pretty src/# edit code, run againdmypy run -- --pretty src/dmypy stop



