型チェックしたい(mypy

$ mypy ファイル名
$ mypy ディレクトリ名

# 多数のオプションあり
$ mypy --ignore-missing-imports ファイル名

mypyで、ファイル(やディレクトリ内のファイル)に対して、静的型チェックできます。 厳密な型チェックを通過させるのはとても難しいので、 オプションや設定ファイルで調整して使うのが一般的です。

インストールしたい(mypy

  • pipxでインストール

$ pipx install mypy
  • poetryでインストール

$ poetry add mypy --group test
  • uvでインストール

$ uv tool install mypy
$ mypy --version
mypy 1.17.1 (compiled: yes)

設定ファイルしたい(pyproject.toml

mypyの設定はpyproject.toml[mypy]セクションで変更できます。

注釈

mypy.ini.mypy.inisetup.cfgも利用できますが、 最近はpyproject.tomlにまとめるのが主流です。

厳密チェックしたい(mypy --strict

$ mypy --strict ファイル名

$ mypy
  --warn-unused-configs \
  --disallow-any-generics \
  --warn-unused-configs \
  --disallow-any-generics \
  --disallow-subclassing-any \
  --disallow-untyped-calls \
  --disallow-untyped-defs \
  --disallow-incomplete-defs \
  --check-untyped-defs \
  --disallow-untyped-decorators \
  --warn-redundant-casts \
  --warn-unused-
    ignores, --warn-return-any, --no-implicit-reexport, --strict-equality,
--strict-bytes, --extra-checks

py.typedしたい

py.typedは配布したパッケージが型対応していることを示すためのファイルです。 自作パッケージの場合__init__.pyと同じ階層に空ファイルとして作成します。

PEP561で定義されていて、mypypyrightなどの型チェッカーが、パッケージの型を正しく認識できるようになります。

注釈

パッケージの一部が型対応している場合は py.typedの中身にpartialと書いておきます。

リファレンス