Mypy does not detect redundant keyword arguments in 'str.format()'
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report
To Reproduce
DOES NOT DETECT
from typing import Final
spam: Final[str] = "spam: {eggs}"
spam_eggs = spam.format(eggs="EGGS", foo="bar")
DOES NOT DETECT
from typing import Final
spam: str = "spam: {eggs}"
spam_eggs = spam.format(eggs="EGGS", foo="bar")
DOES NOT DETECT
spam = "spam: {eggs}"
spam_eggs = spam.format(eggs="EGGS", foo="bar")
DETECTS error: Not all arguments converted during string formatting [str-format]
from typing import Final
spam: Final = "spam: {eggs}"
spam_eggs = spam.format(eggs="EGGS", foo="bar")
Expected Behavior
Always detect redundant keys in the 'format()' and raise an appropriate error.
Actual Behavior
Redundant keys in the 'format()' are detected only when I use Final and only when the Final is without arguments.
Your Environment
- Mypy version used: 0.910
- Python version used: 3.9
- Operating system and version: Lubuntu 20.04
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 damit, die vier Beispiele aus dem issue mit mypy 0.910 auszuführen, und vergleiche, welche Annotationen das Ergebnis ändern. Verfolge den Einstiegspunkt der String-Formatprüfung, um zu bestimmen, warum redundante Schlüsselwortargumente nur für ein nicht parametrisiertes Final erkannt werden. Als abgeschlossen gilt die Aufgabe, wenn der erwartete Fehler für alle gezeigten Beispiele konsistent gemeldet wird.
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
- 35/100