Python のプロジェクトに isort, mypy, flake8 を追加します。
- OS: Xubuntu
- Python: 3.10.x
- Shell: zsh
前回の続きです。 まずは仮想環境を有効にします。
. venv/bin/activate
1. isort
isort
を追加します。
仮想環境が有効な状態で以下のコマンドを入力します。
poetry add --group dev isort
これでpyproject.toml
ファイルの[tool.poetry.group.dev.dependencies]
にisort
が追加されます。
python_my_app/main.py
を以下の内容に変更します。
import os
import logging
import pendulum
now_in_paris = pendulum.now("Europe/Paris")
print(now_in_paris)
前回追加したblack
とisort
が競合することがあります。これを回避するためにpyproject.toml
に以下の内容を追記します。
公式ページ
[tool.isort]
profile = "black"
isort
でフォーマットしてみます。
poetry run isort .
main.py
がフォーマットされます。import logging
とimport os
の順番がソートされました。
2. mypy
mypy
を追加します。
poetry add --group dev mypy
python_my_app/main.py
を以下の内容に変更します。
import logging
import os
import pendulum
now_in_paris = pendulum.now("Europe/Paris")
print(now_in_paris)
number = input("What is your favorite number?")
print("It is", number + 1)
mypy
でチェックしてみます。
poetry run mypy .
python_my_app/main.py:10: error: Unsupported operand types for + ("str" and "int") [operator]
末尾に出力されている[operator]
がエラーコードです。これは、error_codesあたりを探せば内容を確認できます。
なお、mypy
の設定はpyproject.toml
ファイルに書きます。
以下は設定例です。
[tool.mypy]
ignore_missing_imports = true
namespace_packages = true
3. flake8
flake8
を追加します。
poetry add --group dev flake8
setup.cfg
ファイルをpyproject.toml
と同じ階層に作成し以下の内容で保存します。
[flake8]
max-line-length = 88
exclude =
.git,
__pycache__,
venv,
flake8
でチェックします。
poetry run flake8 .
以下のような結果となります。
./python_my_app/main.py:1:1: F401 'logging' imported but unused
./python_my_app/main.py:2:1: F401 'os' imported but unused
エラーの理由については、flake8
のエラーコードや pycodestyle
のエラーコードを参照します。
以上です。