Request: Detect redundant overload with keyword-only params
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Feature
I'd like mypy to raise a "overload won't be matched" or "is redundant" or similar for the following two cases:
@overload
def foo(a: str, b: str, c: str): ...
@overload
def foo(a: str, *, b: str, c: str): ... # I believe this is redundant
@overload
def foo(a: str, *, b: str, c: str): ... # I believe this is redundant
@overload
def foo(a: str, b: str, c: str): ...
Pitch
Redundant or unreachable overloads are a code smell revealing either an error that slipped by or a misunderstanding of overloads. This is already raised with simpler signatures.
Example from a typeshed PR where a redundant overload was accidentally left in: https://github.com/python/typeshed/pull/10706#discussion_r1334910025
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
Führe die beiden Overload-Beispiele mit mypy aus und verfolge den bestehenden Diagnosepfad für redundante oder nicht erreichbare Overloads, wobei du beachtest, wie Keyword-only-Parameter behandelt werden. Erledigt ist die Aufgabe, wenn beide Reihenfolgevarianten eine passende Diagnose erhalten, sobald der spätere Overload nicht übereinstimmen kann.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- compilers, devtools
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 48/100