mypy recognizes value type in nested dicts as object
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report
In some cases (see code below) mypy recognizes type of values in nested dict as object. Adding hint with more exact type results in an error.
To Reproduce
from typing import Union
key = 'foo'
x: dict[str, Union[str, bool]] = {
'foo': {
'key1': 'value',
'key2': True,
},
'bar': {
'key3': 'value',
'key4': False,
},
}[key]
Expected Behavior
mypy should not raise any error.
Actual Behavior
main.py:4: error: Incompatible types in assignment (expression has type "Dict[str, object]", variable has type "Dict[str, Union[str, bool]]")
Found 1 error in 1 file (checked 1 source file)
Your Environment
- Mypy version used: 0.971
- Python version used: 3.11
- Operating system: Linux
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 Reproduzierer für verschachtelte Dictionaries in main.py und führe mypy damit unter den angegebenen Python- und mypy-Versionen aus. Verfolge die Typinferenz für das Dictionary-Literal und den indizierten Zugriff; abgeschlossen ist die Aufgabe, wenn das Beispiel keinen Fehler erzeugt und dabei den erwarteten Typ dict[str, Union[str, bool]] beibehält.
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