Matching generic return type of `SupportsGetItem`
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report
mypy does not match the generic return type of SupportsGetItem properly.
This was proposed in https://github.com/astral-sh/ty/issues/3988#issuecomment-4960290236.
To Reproduce
https://mypy-play.net/?gist=b8bb3085f195314a6c7c89ed2bdd2576
from __future__ import annotations
from typing import TYPE_CHECKING, Any, TypeVar
if TYPE_CHECKING:
from _typeshed import SupportsGetItem
class Series: ...
class DataFrame:
def __getitem__(self, key: object) -> Series:
return Series()
T = TypeVar("T")
def f(x: SupportsGetItem[Any, T]) -> T:
if isinstance(x, DataFrame):
# return Series()
return 1 # false error-free
else:
return x[0]
Expected Behaviour
Report an error about return type
Actual Behaviour
No error
Your Environment
mypy playground
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit der verknüpften mypy-play-Reproduktion und untersuche, wie SupportsGetItem[Any, T] behandelt wird, wenn der Kontrollfluss x auf DataFrame eingrenzt. Bestätige die erwartete Diagnose aus dem Beispiel, verfolge dann das relevante Verhalten der Typprüfung und füge für diesen Fall Tests hinzu oder aktualisiere sie. Als erledigt gilt die Aufgabe, wenn mypy den ungültigen Rückgabetyp meldet, anstatt return 1 zu akzeptieren.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- compilers, devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Ruhig
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 48/100