TypedDict doesn't support Union[Literal] as key "string literal"
Offen
Dieses Issue hat noch niemand übernommen.
bug
priority-2-low
topic-literal-types
topic-typed-dict
topic-union-types
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Possibly bug.
Related: https://github.com/python/mypy/issues/7644
Reproducible example
from typing_extensions import Literal, TypedDict
class TDict(TypedDict):
KEY1: int
KEY2: int
d1: TDict = {'KEY1': 1, 'KEY2': 2}
key2: Literal['KEY1']
d2: TDict = {key2: 1, 'KEY2': 2}
key3: Literal['KEY1', 'KEY2']
d3: TDict = {key3: 1, 'KEY2': 2} # error: Expected TypedDict key to be string literal
I use mypy 0.740 and python3.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 damit, die bereitgestellten TypedDict- und Literal-Beispiele mit mypy 0.740 auszuführen, wobei der Schwerpunkt auf der d3-Zuweisung liegt, die „Expected TypedDict key to be string literal.“ meldet. Als erledigt gilt die Aufgabe, wenn der reproduzierbare Fall mit einem Schlüssel aus einer Union von Literalen konsistent genauso akzeptiert wird wie der Fall mit einem einzelnen Literal.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100