Typo in kwarg to overloaded function results in message about type mismatch
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
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
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia dal reproducer mypy-play collegato e traccia il controllo delle chiamate a overload per gli argomenti denominati. Aggiungi un test di regressione per l'argomento scritto in modo errato baz, quindi verifica che la diagnostica segnali un argomento denominato imprevisto invece di un'incompatibilità di tipo di overload.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- tooling
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 58/100