🔥

mypy の [import-untyped] や [import-not-found] への対応

2024/01/11に公開

mypy を実行する際、以下のようなエラーが出ることがある。

error: Skipping analyzing "gspread": module is installed, but missing library stubs or py.typed marker  [import-untyped]
note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports

See と言われている公式ドキュメントに対応は書いてある。
エラーとしては、import しているモジュールに対応する type hint が無いというもの。

正攻法としては、ライブラリを更新して type hint が入るか、もしくは対応の stubs があれば、それをインストールすればよい。

しかし、stubs などが無いライブラリや、独自モジュールはよくある。
その際は --ignore-missing-imports オプションを付ければよい。
そして、できるだけ --ignore-missing-imports する対象は少なくすべきなので、
設定ファイルに ignore するライブラリを記述するのがよい。

例として、pyproject.toml ならば以下のようにすればよい。

[[tool.mypy.overrides]]
module = ['gspread', 'mymodule]
ignore_missing_imports = true

mypy.ini の場合は
https://mypy.readthedocs.io/en/stable/config_file.html#example-mypy-ini
を参照。

Discussion