False positive error on `**kwargs` with `Mapping[Literal, Any]` type
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
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
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 mypy-play collegato e confronta i casi GOOD_KW, BAD_KW, dict e Mapping. Leggi #20419, che l’issue identifica come la correzione, e #20416 per il contesto correlato. Il lavoro è completato quando il caso Mapping non segnala più un falso positivo, mentre i casi con chiavi non valide non stringa continuano a produrre errori.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- devtools
- Tipo di issue
- Bug
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 15/100