こうなるやつ

原因
- boto3-stubsはそのままインストールしただけでは、個別のサービスについてのスタブがインストールされない。
python -m pip install "boto3-stubs[s3]"みたいにサービスごとにインストールしないといけない。 boto3.client()は渡された文字列に応じてクライアントを作って返すファクトリーなので、戻り値の型はServiceA_Client | ServiceB_Client | ServiceC_Client ...とサービスごとに分かれている。- つまり、
client()の戻り値の全体像は、boto3-stubs の全てのサービスをインストールしないと解釈できない。不明な型1 | 不明な型2 | 不明な型3 | ... | 既知の型となり、「部分的に不明です」となる。
対策
- 全てのサービスをインストールする
python -m pip install "boto3-stubs[all]"する- めちゃくちゃいっぱいインストールされるのでマジかよって感じになる
- Pylance fails to resolve type of boto3.client method · Issue #2809 · microsoft/pylance-release · GitHub だいたいこのコメントに集約されている。
- 該当コードについては
# pyright: ignore[reportUnknownMemberType]指定してしまう。- 現実的。
- 行末コメントを許可しないといけない。
python.analysis.typeCheckingMode = "strict"をやめる- ウム...