False positive error on `**kwargs` with `Mapping[Literal, Any]` type
Offen
Dieses Issue hat noch niemand übernommen.
bug
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
https://mypy-play.net/?mypy=master&python=3.12&flags=verbose&gist=c3db401cf676c8c593dec1c525f7e748
Mypy Version: 1.20.0+dev.d06d3d9cfd6611c0e64c0df59fc0449754e47ed8
Fixed by: #20419
See Also: #20416
from typing import Literal, Mapping, Iterable
def func(a: int, b: int) -> None: ...
class GOOD_KW:
def keys(self) -> Iterable[Literal["a", "b"]]: ...
def __getitem__(self, key: str) -> int: ...
class BAD_KW:
def keys(self) -> Iterable[Literal["one", 1]]: ...
def __getitem__(self, key: str) -> int: ...
def test(
good_kw: GOOD_KW,
bad_kw: BAD_KW,
good_dict: dict[Literal["a", "b"], int],
bad_dict: dict[Literal["one", 1], int],
good_mapping: Mapping[Literal["a", "b"], int],
bad_mapping: Mapping[Literal["one", 1], int],
) -> None:
func(**good_kw)
func(**bad_kw) # E: Argument after ** must have string keys
func(**good_dict)
func(**bad_dict) # E: Argument after ** must have string keys
func(**good_mapping) # ❌️ False positive
func(**bad_mapping) # E: Argument after ** must have string keys
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 verlinkten mypy-play-Reproducer und vergleiche die Fälle GOOD_KW, BAD_KW, dict und Mapping. Lies #20419, das der Issue als Fix identifiziert, und #20416 für verwandten Kontext. Als erledigt gilt die Aufgabe, wenn der Mapping-Fall kein falsch positives Ergebnis mehr meldet, während die ungültigen Fälle mit Nicht-String-Schlüsseln weiterhin Fehler erzeugen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 15/100