using a decorator on an overloaded function where the decorator uses `Concatenate` causes false positive "Overloaded function implementation does not accept all possible arguments" error
Offen
Dieses Issue hat noch niemand übernommen.
bug
topic-paramspec
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
from typing import Callable, Concatenate, TypeVar, overload, ParamSpec
T = TypeVar("T")
P = ParamSpec("P")
R = TypeVar("R")
def foo(fn: Callable[Concatenate[T, P], R]) -> Callable[Concatenate[T, P], R]:
return fn
class Foo:
@overload
def bar(self, a: str) -> str: ...
@overload
def bar(self, a: int) -> int: ...
# error: Overloaded function implementation does not accept all possible arguments of signature 1
# error: Overloaded function implementation does not accept all possible arguments of signature 2
@foo
def bar(self, a: object) -> 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 bereitgestellten Reproducer im mypy playground und untersuche, wie überladene Implementierungen geprüft werden, wenn die Implementierung mit einem Callable unter Verwendung von Concatenate dekoriert ist. Bestätige die False-Positive-Fehler für beide Überladungen und verifiziere anschließend, dass gültige dekorierte Überladungen bestehen, ohne die vorhandenen Prüfungen der Argumentkompatibilität abzuschwächen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100