(🐞) Generic Inference completely broken when a `TypeVar` has `None` in the `bound`
Offen
Dieses Issue hat noch niemand übernommen.
bug
topic-type-variables
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
from typing import Generic, TypeVar, Iterable
T = TypeVar("T")
T1 = TypeVar("T1", bound=None)
class Test(Generic[T, T1]):
def test(self) -> None:
data1: list[T]
data2: list[T] | list[T1]
data3: list[T1] | list[T]
reveal_type(tester(data1)) # list[T]
reveal_type(tester(data2)) # list[object]
reveal_type(tester(data3)) # list[Any]
def tester(a: Iterable[T]) -> list[T]: ...
The same thing happens if the bound is a union with None in it.
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 dem bereitgestellten mypy-play-Playground-Link und führe das Minimalbeispiel unter den angegebenen Python 3.10- und strict-Einstellungen aus. Vergleiche die angezeigten Typen mit den Kommentaren und überprüfe anschließend dasselbe Verhalten für eine Union-Grenze, die None enthält; erledigt ist die Aufgabe, wenn beide Fälle die erwarteten Typen ableiten.
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
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100