TypedDict does not treat union of string literals as a string literal
Aperta
Nessuno ha ancora preso questa issue.
bug
topic-literal-types
topic-typed-dict
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
Bug Report
To Reproduce
https://mypy-play.net/?mypy=latest&python=3.14&gist=a2d228294e0a7a613472376043c62642
from typing import NotRequired, TypedDict
class Foo(TypedDict):
key1: NotRequired[str]
key2: NotRequired[int]
foo = Foo()
for key in "key1", "key2":
reveal_type(key)
del foo[key]
Expected Behavior
This should type check with no errors.
Actual Behavior
main.py:11: note: Revealed type is "Literal['key1']? | Literal['key2']?"
main.py:12: error: Expected TypedDict key to be string literal [misc]
Found 1 error in 1 file (checked 1 source file)
Your Environment
- Mypy version used: 1.18.2
- Python version used: 3.14
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 riproducendo l'esempio dal link mypy-play in main.py con mypy 1.18.2 e Python 3.14. Traccia il modo in cui il controllo dell'eliminazione di TypedDict gestisce l'unione rivelata di valori letterali stringa, quindi aggiungi la copertura per questo esempio e verifica che il controllo dei tipi venga eseguito senza errori.
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
- 48/100