python / python/mypy

Typo in kwarg to overloaded function results in message about type mismatch

Offen
#14,895 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug topic-overloads topic-usability
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Bug Report

Passing an incorrectly named kwarg to an overloaded function results in a misleading error message about types:

from typing import overload

@overload
def foo(bar: int) -> int:
    ...

@overload
def foo(bar: None) -> None:
    ...
    
def foo(bar: int | None) -> int | None:
    ...
    
foo(baz=42)  # typo: 'baz' should be 'bar'
error: No overload variant of "foo" matches argument type "int"  [call-overload]
note: Possible overload variants:
note:     def foo(bar: int) -> int
note:     def foo(bar: None) -> None

To Reproduce
https://mypy-play.net/?mypy=latest&python=3.10&gist=0c0b7a4699e67b65d38eb182fb75c444

Expected Behavior
A message such as error: Unexpected keyword argument "baz" for "foo" [call-arg] (which is what you get when the function is not overloaded).

Actual Behavior
error: No overload variant of "foo" matches argument type "int" [call-overload]

Your Environment

  • Mypy version used: 1.0.0

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginnen Sie mit dem verknüpften mypy-play-Reproducer und verfolgen Sie die Prüfung von Overload-Aufrufen für Schlüsselwortargumente. Fügen Sie einen Regressionstest für das falsch geschriebene Argument baz hinzu und überprüfen Sie anschließend, dass die Diagnose ein unerwartetes Schlüsselwortargument statt einer Typabweichung beim Overload meldet.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
tooling
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
58/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.