Mypy fails to correctly validate Type[T]
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Dear all,
Consider the example code below:
from typing import Type, TypeVar, Tuple
T = TypeVar('T')
def func(a: T, a_type: Type[T]) -> Tuple[T, Type[T]]:
return a, a_type
a1, a1_type = func(1, int)
a2, a2_type = func(1, str)
reveal_type(a1)
reveal_type(a1_type)
reveal_type(a2)
reveal_type(a2_type)
The first call to func shouldn't give rise to any issues, while the second one should complain about an incompatible type in the a_type argument (as type(1) is not str).
Yet, whenever I run mypy (Python 3.7; mypy 0.770; MacOS 10.15.1) it fails to produce any errors, even going as far to infer the type of a2 as object instead of int.
>>> mypy test.py
test.py:13: note: Revealed type is 'builtins.int'
test.py:14: note: Revealed type is 'Type[builtins.int]'
test.py:15: note: Revealed type is 'builtins.object'
test.py:16: note: Revealed type is 'Type[builtins.object]'
Is anyone familiar with this issue?
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 damit, das bereitgestellte Beispiel mit mypy auszuführen und die gemeldeten Typen und Diagnosen mit dem erwarteten Ergebnis zu vergleichen. Verfolge den Pfad der Typinferenz und der Argumentvalidierung für Type[T]; als erledigt gilt die Ablehnung von func(1, str), die Akzeptanz von func(1, int) und die korrekte Inferenz der aufgedeckten Typen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 35/100