Parameters for a call to a function wrapped in a lru_cache are not checked
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
The parameters used in a call to a function which is wrapped in a functools.lru_cache are not checked.
To Reproduce
from datetime import date
from functools import lru_cache
@lru_cache
def f(v: str, at: date) -> str:
return v
f()
f("abc")
f("abc", date.today())
f("abc", now=date.today())
f("abc", at=date.today())
f("abc", at="wrong_type")
Expected Behavior
This should raise several errors about the arguments being wrong. Commenting out the line @lru_cache correctly generates the following errors.
lru_cache_type_test.py:8: error: Missing positional arguments "v", "at" in call to "f" [call-arg]
lru_cache_type_test.py:9: error: Missing positional argument "at" in call to "f" [call-arg]
lru_cache_type_test.py:11: error: Unexpected keyword argument "now" for "f" [call-arg]
lru_cache_type_test.py:13: error: Argument "at" to "f" has incompatible type "str"; expected "date" [arg-type]
Actual Behavior
Success: no issues found in 1 source file
Your Environment
mypy 1.6.0 running on Python 3.11.6
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 con il reproducer descritto in lru_cache_type_test.py ed esegui mypy con e senza @lru_cache per confermare la differenza. Traccia il modo in cui vengono analizzate le funzioni racchiuse da functools.lru_cache, quindi aggiungi la copertura per argomenti mancanti, parole chiave impreviste e tipi incompatibili; il lavoro è completato quando queste chiamate segnalano gli errori previsti e le chiamate valide continuano a essere accettate.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- devtools
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 45/100