Parameters for a call to a function wrapped in a lru_cache are not checked
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
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
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit dem in lru_cache_type_test.py beschriebenen Reproducer und führe mypy mit und ohne @lru_cache aus, um den Unterschied zu bestätigen. Verfolge, wie mit functools.lru_cache umschlossene Funktionen analysiert werden, und ergänze Abdeckung für fehlende Argumente, unerwartete Schlüsselwörter und inkompatible Typen; abgeschlossen ist die Aufgabe, wenn diese Aufrufe die erwarteten Fehler melden und gültige Aufrufe weiterhin akzeptiert werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100