False positive `overload-overlap` with booleans and integer literals
Offen
Dieses Issue hat noch niemand übernommen.
bug
topic-overloads
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report, To Reproduce, & Actual Behaviour
The following 2 cases trigger overload-overlap, when neither of them should (see mypy Playground).
from typing import overload, Literal
@overload
def display_str_literal(val: Literal[False], /) -> Literal["BooleanFalse"]: ... # E: ... overload-overlap
@overload
def display_str_literal(val: Literal[0], /) -> Literal["Zero"]: ...
from typing import overload, Literal
@overload
def display_str_literal_2(val: bool, /) -> Literal["Boolean"]: ...
@overload
def display_str_literal_2(val: Literal[-1], /) -> Literal["NegativeOne"]: ...
- Mypy version used: 1.18.2
- Python version used: 3.12, 3.13
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 den beiden Reproduktionen im verlinkten mypy Playground und bestätige die Diagnosen zur Überschneidung von Overloads unter Python 3.12 oder 3.13. Verfolge den Type-Checker-Pfad, der die Überschneidung von Overloads für Literal-Boolean-Werte und Integer-Literale meldet; abgeschlossen ist die Aufgabe, wenn beide Beispiele ohne eine falsch-positive Diagnose typgeprüft werden.
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
- Größtenteils klar
- Anfängerfreundlichkeit
- 39/100