basedpyrightの設定

pyproject.tomlには、最低限こんな感じで書いている。

[tool.basedpyright]
typeCheckingMode = "recommended"
extraPaths = ["/path/to/site-packages/"]
reportAny = "none"
reportUnusedCallResult = "none"
pythonVersion = "3.13"  # for override decorator from typing
  • reportAny = "none" にしている。basedpyrightの型推論が追いつかず、警告だらけになることがしばしばなので。

  • reportUnusedCallResult = "none" にしないと、例えばPyTorchのnn.Moduleのtrain()やoptimizerのstep()、さらにはmatplotlibのplot系関数が、のきなみ警告を発するようになってしまい、とてもうっとうしい。

必要に応じて、以下の設定も使ったりする。

reportMissingTypeStubs = "none"
reportUnknownArgumentType = "none"
reportUnknownMemberType = "none"
reportUnknownVariableType = "none"
  • reportMissingTypeStubs = "none" にしないと、利用するライブラリがスタブ対応していないと警告を発する。ただ、スタブの対応はライブラリ利用者側では対処しづらい。ちなみにscipyはscipy-stubsがあり、これを入れておくのが吉。その場合,この設定は不要になる。

  • reportUnknownVariableType = "none" にしないと、ライブラリ関数のインポートだけで警告だらけになることがしばしばある。その場合はスタブの導入で解消されることもある。