python / python/mypy

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

Aperta
#14,895 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

bug topic-overloads topic-usability
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

  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 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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.