"Overloaded function signatures overlap with incompatible return types" false positive when there can be a subtype of both return types
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
from typing import overload, Literal
class A: ...
class B: ...
class C(A, B): ...
@overload
def foo(a: Literal[True], b: Literal[True]) -> C: ...
@overload
def foo(a: Literal[True], b: bool) -> A: ... # error: Overloaded function signatures 2 and 3 overlap with incompatible return types [misc]
@overload
def foo(a: bool, b: Literal[True]) -> B: ...
def foo(a: bool, b: bool) -> object: ...
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 minimalen Reproducer im Issue und untersuche mypys overload-overlap-Diagnostic für die drei Signaturen mit A, B und C. Bestätige das Verhalten anhand des verlinkten Playground-Beispiels und füge anschließend einen Regressionstest hinzu oder aktualisiere ihn, sodass kompatible Rückgabetypen von Subtypen nicht länger einen False Positive erzeugen, während tatsächlich inkompatible Overlaps weiterhin diagnostiziert werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- tooling
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100