python の型アノテーションの正しさの判定を行う。
virtualenv env
start env/Scripts/activate.bat
pip install mypy
mypy ~.py
#ディレクトリ以下全てのpythonファイルの型チェックを行う
mypy ディレクトリ名
[mypy_files.txt]
src/main
src/test
以下のコマンドで実行
mypy $mypy_files.txt ~.py
a: any = 'hello' # type: ignore
mypy.ini
を検証したい python ファイルがあるディレクトリに作成- 以下の設定がおすすめ
[mypy]
; python version
python_version = 3.8
; importされたpythonファイルの型判断を無視
ignore_missing_imports = True
; 検証してほしいpackageのモジュールを書く
; modules = []
; 検証してほしいpackageを書く
; packages = []
; 型注釈のある関数から型注釈のない関数を呼び出すことを禁止するかどうか
disallow_untyped_calls = True
; 型宣言していない関数を許さないかどうか
disallow_untyped_defs = True
; disallow_untyped_defs = Trueの時に、型アノテーションが欠落していることを警告するかどうか
warn_incomplete_stub = True
; エラーメッセージの列番号を表示するかどうか
show_column_numbers = True
#以下のオプションは好み
#変数の再定義を許容するかどうか
allow_redefinition = True
; # type: ignore の存在を許すかどうか
; つまり、型定義を無視するように指示した行を許すかどうか
warn_unused_ignores = True
; 1つまたは複数のエラーコードをグローバルに無効にすることができる。
; 型は、エラーコードをstring型でlistとして記述
; エラーコードの解決ができないときの最終手段
; disable_error_code = []
実際のファイルに書き込む内容は、コメントアウトがあるとバグるので以下のものを使用
[mypy]
python_version = 3.8
ignore_missing_imports = True
disallow_untyped_calls = True
disallow_untyped_defs = True
warn_incomplete_stub = True
show_column_numbers = True
allow_redefinition = True
warn_unused_ignores = True
※[mypy]
は、グローバル設定となる
※#
は、コメントアウト
※[hoge.sub-hoge]
← これ以下に書く設定は、hoge/sub-hoge ディレクトリ以上で適応される
※[mypy-package名]
← その package 名の設定となる
# Global options:
[mypy]
# Seach packge options:
[mypy-numpy]
# Sub directory options:
[hoge.sub-hoge]
- 実行は、以下のコマンドになる
mypy --config-file mypy.ini ~.py
mypy.ini
とmypy_files.txt
をプロジェクトのルートディレクトリに作成- 以下のコマンドで実行をかける
mypy --config-file mypy.ini $mypy_files.txt ~.py