python / python/mypy

Error handling wrappers with `**kwargs` syntax

Aperta
#15,321 7 commenti 2 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

bug
Lingua principale
Python
Stelle
20.6k
Fork
3.3k
Metriche di merge delle PR
Metriche PR in attesa

Descrizione

Bug Report

mypy seems to be unable to pass down the types of **kwargs arguments properly.

To Reproduce

def my_function(flag: bool = True, **kwargs: str) -> None:
    ...


def wrapper(**kwargs: str) -> None:
    my_function(**kwargs)

Playground Link

Actual Behavior

main.py:6: error: Argument 1 to "my_function" has incompatible type "**Dict[str, str]"; expected "bool"  [arg-type]
Found 1 error in 1 file (checked 1 source file)

Expected Behavior

I would expect no errors. Though I can see that inputting flag="hello" could cause issues, although the error message does not help in identifying this. Also, in that case, I would expect rewriting the wrapper like below would satisfy mypy (it doesn't):

def wrapper(**kwargs: str) -> None:
    if "flag" in kwargs:
        raise
    my_function(**kwargs)

Your Environment

  • Mypy version used: 1.3.0
  • Python version used: 3.11.2

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

L'issue non indica alcun file o test del repository; inizia con il riproduttore Python minimale e il playground mypy-play collegato. Traccia come vengono controllate le chiamate che usano **kwargs, quindi verifica che il wrapper valido venga accettato mentre al caso flag="hello" venga applicata una gestione appropriata, aggiungendo un test di regressione una volta individuati i test pertinenti del checker.

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

Valutazione

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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.