False positive with disallow-any-explicit and `...` in `Callable` in bound of type var
オープン
まだ誰も着手していません。
bug
priority-2-low
topic-calls
topic-disallow-any
- 主要言語
- Python
- スター
- 20.6k
- フォーク
- 3.3k
- PR マージ指標
- PR 指標を取得中
説明
I want a generic function type, but I don't want to get spurious Any errors on every usage.
from typing import Callable, TypeVar
Fn = TypeVar("Fn", bound=Callable[..., object])
mypy --disallow-any-explicit .
error: Explicit "Any" is not allowed
Fn = TypeVar("Fn", bound=Callable[..., object])
^
I understand that this is actually usable as unsafe Any garbage:
def foo(fn: Fn) -> Fn: # type safe usage
fn(1) # not type safe usage
So this should be the only place where the error appears.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず、示されている TypeVar("Fn", bound=Callable[..., object]) の例で mypy --disallow-any-explicit を使って問題を再現し、次に明示的な Any の診断が Callable の bound 内の ... をどのように処理するかを追跡します。Fn を使用するたびに誤ったエラーを生成せず、bound が意図された安全でない Any のケースとして診断されれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python
- 領域
- devtools
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 静か
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 48/100