Regression in 1.7: mypy loses truthiness constraint for union containing tuple
Offen
Dieses Issue hat noch niemand übernommen.
bug
topic-type-narrowing
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
def f(x: bool | tuple[int, int]):
if x:
if x is True or x[0]:
pass
Gives:
main.py:3: error: Value of type "Literal[False] | tuple[int, int]" is not indexable [index]
This error is newly reported after #16237
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 zu reproduzieren, und vergleiche das nach Issue #16237 eingeführte Verhalten. Verfolge die Narrowing-Logik für eine Truthiness-Prüfung einer Union aus bool und tuple. Fertig ist die Aufgabe, wenn das Beispiel keinen Indexierbarkeitsfehler mehr meldet und dabei das korrekte Narrowing für die anderen Zweige erhalten bleibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 38/100