型チェックしたい(pyright)
$ pyright --version
pyright 1.1.411
$ pyright ファイル名 or ディレクトリ名
pyrightはMicrosoftが開発しているPython用の型チェッカーです。
注釈
VS Code拡張Pylanceの内部で使用されています。
インストールしたい(pyright)
pipxでインストール
$ pipx install pyright
poetryでインストール
$ poetry add pyright --group test
uvでインストール
$ uv tool install pyright
設定したい([tool.pyright])
1[tool.pyright]
2include = ["src"]
3exclude = ["tests/helpers"]
4reportMissingImports = true
5reportUnusedImport = "warning"
6typeCheckingMode = "strict"
pyrightの設定は、pyproject.tomlの[tool.pyright]セクションで変更できます。
キー名はJSON版のpyrightconfig.jsonと同じですが、TOMLの書式(キー = 値)で書きます。
注釈
独立したpyrightconfig.jsonファイルでも同じ内容を設定できます。
pyrightconfig.jsonが存在する場合は、そちらが優先されます。
VS Codeで使いたい(Pylance)
Pylanceは、内部でpyrightを使っているVS Code拡張です。
CLIやCIではpyrightconfig.jsonを使いますが、
VS Code上でリアルタイムに解析させる場合は、
その他のVS Code拡張と同様にsettings.jsonで設定します。
{
// Pylanceを有効にする
"python.languageServer": "Pylance",
// 型チェックのモード
// "off" | "basic" | "standard" | "strict"
"python.analysis.typeCheckingMode": "standard",
// 解析対象のパスを追加
"python.analysis.extraPaths": [
"./src",
"./tests"
],
// 型スタブ(関数の型定義)を配置するパス
// C拡張モジュールをラップする場合に必要
"python.analysis.stubPath": "./typings",
// インポート解決の挙動
"python.analysis.autoImportCompletions": true,
"python.analysis.autoSearchPaths": true,
// 未使用コードの警告
"python.analysis.diagnosticSeverityOverrides": {
"reportUnusedImport": "warning",
"reportUnusedVariable": "information"
}
}
注釈
pyrightconfig.jsonとsettings.jsonは、どちらも同じpyrightエンジンを設定するものですが、
キー名の書式が異なります(例:typeCheckingModeとpython.analysis.typeCheckingMode)。
両方を用意している場合、pyrightconfig.json(やpyproject.tomlの[tool.pyright])の設定が優先されます。
pyrightconfig.jsonが存在するフォルダーは、開発者ごとに設定がバラつかず、
誰が開いても同じエラーセットになることを意図した設計です。