はじめに #
本記事はmemoレベルでしか調査していないため、誤りがある可能性があります。ご注意ください。
Python + visual studio code + Ruffを使う上で気をつけること。
1. pyproject.tomlを優先する #
問題
Ruffのvscode拡張では、設定をpyproject.toml
から自動で読み込んでくれる。
# pyproject.toml
[tool.ruff]
target-version = "py311"
exclude = ["alembic"]
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"B", # flake8-bugbear
"C4", # flake8-comprehensions
"UP", # pyupgrade
"ARG001", # unused arguments in functions
"PL", # pylint
]
ignore = [
"E501", # line too long,
"B008", # do not perform function calls in argument defaults
"W191", # indentation contains tabs
"B904", # Allow raising exceptions without from e, for HTTPException
]
しかし「vscodeの設定が常に優先される」ので、pyproject.toml
が無視されてしまうことがある。
https://github.com/astral-sh/ruff-vscode/issues/425
解決方法
vscodeに設定項目が追加された様なので、設定の優先度を指定できるようになった。 https://github.com/astral-sh/ruff-vscode/blob/main/package.json
項目 | 説明 |
---|---|
editorFirst | [default]エディターで設定された設定は、.toml ファイルで設定された設定よりも優先されます。 |
filesystemFirst | .toml ファイルに設定された構成は、エディターに設定された構成よりも優先されます。 |
editorOnly | .toml ファイルに設定された設定は完全に無視されます |
これでチーム開発の場合は
pyproject.toml
を優先して、コード規約がないprojectの場合は独自のRuff設定を使える。
2. import文をformat #
問題
import文がフォーマットコマンドruff format
や、vscodeのformat on save
ではformatされない。
解決方法
import文もformatしたい場合は以下コマンドになる。 https://docs.astral.sh/ruff/formatter/#sorting-imports
ruff check --select I --fix
ruff format
format
コマンドでimportも修正できるように検討中らしい。
https://github.com/astral-sh/ruff/issues/8232
3. その他 #
まだ問題になってないけど、どういう挙動をするか不明なもの
vscodeのtopにpyproject.toml
が無い
.
├── frontend
├── backend
│ ├── app/
│ ├── poetry.lock
│ ├── pyproject.toml
│ └── README.md
└── README.md