python / python/mypy

(🐞) Wrong error message on overloaded function with unexpected keyword parameter

Offen
#11,927 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

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

Beschreibung

No overload variant of "foo" matches argument type "int"

This error message is flat out incorrect as there is a variant that matches int but there is an unexpected parameter name.

from typing import overload

@overload
def foo(a: int) -> None: ...

@overload
def foo(a: str) -> None: ...

def foo(a: object) -> None: ...

def bar(a: int) -> None: ...

foo(b=1)
bar(b=1)
main.py:11: note: "bar" defined here
main.py:13: error: No overload variant of "foo" matches argument type "int"  [call-overload]
main.py:13: note: Possible overload variants:
main.py:13: note:     def foo(a: int) -> None
main.py:13: note:     def foo(a: str) -> None
main.py:14: error: Unexpected keyword argument "b" for "bar"  [call-arg]
Found 2 errors in 1 file (checked 1 source file)

playground link

Also

In that output, for what reason is there a random main.py:11: note: "bar" defined here? Should I raise that as a separate issue?

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

Beginne mit dem bereitgestellten main.py-Reproducer oder dem verknüpften mypy-Playground und vergleiche die Diagnosen für das überladene foo mit dem nicht überladenen bar. Verfolge den Pfad der Fehlerberichterstattung für Overloads und überprüfe, dass das fertige Verhalten ein unerwartetes Schlüsselwortargument von einer Typabweichung eines Arguments unterscheidet, während du den Hinweis zur unabhängigen bar-Definition prüfst, der in derselben Ausgabe angezeigt wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
compilers, devtools
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

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