warn when default values on overloads differ from implementation signature
Offen
Dieses Issue hat noch niemand übernommen.
feature
topic-overloads
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
from typing import overload
@overload
def foo(value1: str, value2: bool = False) -> str: # this default value is wrong/useless
...
@overload
def foo(value1: int, value2: bool = False) -> int: # this default value is wrong/useless
...
def foo(value1: str | int, value2: bool = True) -> str | int:
...
in fact, maybe even prohibit defaults on overload signatures entirely, like in typescript:
function foo(value1: number, value2: boolean = false): number //error: A parameter initializer is only allowed in a function or constructor implementation.
function foo(value1: string, value2: boolean = false): string //error: A parameter initializer is only allowed in a function or constructor implementation.
function foo(value1: number | string, value2: boolean = true): number | string {
return 1
}
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 overload-Beispiel zu reproduzieren, und verfolge mypys overload-signature checking. Ermittle, ob das akzeptierte Verhalten eine Warnung für defaults sein sollte, die sich von der Implementierung unterscheiden, oder ein Fehler für beliebige defaults bei overloads. Die Aufgabe ist abgeschlossen, wenn die gewählte Regel konsistent durchgesetzt und durch regression tests abgedeckt wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- tooling
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100