型チェックしたい(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が存在するフォルダーは、開発者ごとに設定がバラつかず、 誰が開いても同じエラーセットになることを意図した設計です。

リファレンス