Incompatible signature using `singledispatchmethod` in a subclass
Offen
Dieses Issue hat noch niemand übernommen.
bug
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report
Mypy can't handle singledispatchmethod overloading a method in a subclass
To Reproduce
from functools import singledispatchmethod
class A:
def foo(self, bar: object) -> object:
return True
class B(A):
@singledispatchmethod
def foo(self, bar: object) -> object:
return super().foo(bar)
@foo.register
def int_impl(self, bar: int) -> int:
return bar + 2
Expected Behavior
I wasn't expecting any error in this piece of code.
Actual Behavior
test.py:11: error: Signature of "foo" incompatible with supertype "A" [override]
Found 1 error in 1 file (checked 1 source file)
My Environment
- Mypy version used: 0.990
- Python version used: 3.11
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
Das Issue nennt keine Repository-Datei und keinen Test; beginne damit, den bereitgestellten Python-Reproducer gegen mypy auszuführen. Verfolge die Diagnose zur inkompatiblen Signatur rund um Überschreibungen in Subklassen und die Behandlung von singledispatchmethod, füge anschließend eine Regressionstestabdeckung hinzu und überprüfe, dass das Beispiel ohne Fehler akzeptiert wird.
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
- Klar beschrieben
- Anfängerfreundlichkeit
- 38/100