python / python/mypy

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

Aperta
#11,927 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

bug topic-error-reporting topic-overloads
Lingua principale
Python
Stelle
20.6k
Fork
3.3k
Metriche di merge delle PR
Metriche PR in attesa

Descrizione

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?

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia con il reproducer main.py fornito o con il mypy playground collegato e confronta le diagnosi per foo sovraccaricato con quelle per bar non sovraccaricato. Segui il percorso di segnalazione degli errori degli overload e verifica che il comportamento completato distingua una parola chiave imprevista da una mancata corrispondenza del tipo dell’argomento, controllando anche la nota sulla definizione non correlata di bar mostrata nello stesso output.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
compilers, devtools
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Tranquilla
Chiarezza
Abbastanza chiara
Idoneità per principianti
48/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.