型チェックしたい(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.ini、setup.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で定義されていて、mypyやpyrightなどの型チェッカーが、パッケージの型を正しく認識できるようになります。
注釈
パッケージの一部が型対応している場合は
py.typedの中身にpartialと書いておきます。