Dict update typing error, update Dict[Union[int, str], str] from Dict[int, str]
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 20.6k
- Forks
- 3.3k
- Métriques de merge des PR
- Métriques de PR en attente
Description
Bug Report
To Reproduce
from typing import Dict, Union
dict_a: Dict[Union[int, str], int] = {}
dict_b: Dict[int, int] = {}
dict_a.update(dict_b)
print(dict_a)
Expected Behavior
No mypy error. dict_b has stricter typing than dict_a, this update operation should be fine.
Actual Behavior
error: Argument 1 to "update" of "MutableMapping" has incompatible type "dict[int, int]"; expected "SupportsKeysAndGetItem[Union[int, str], int]" [arg-type]
Your Environment
- Mypy version used: 1.5.1 (compiled: yes)
- Python version used: 3.9.16
Other Notes
updating items iteratively apparently has no issue.
from typing import Dict, Union
dict_a: Dict[Union[int, str], int] = {}
dict_b: Dict[int, int] = {}
for k, v in dict_b.items():
dict_b[k] = v
print(dict_a)
Using Any of course has no issue too.
from typing import Any, Dict
dict_a: Dict[Any, int] = {}
dict_b: Dict[int, int] = {}
dict_a.update(dict_b)
print(dict_a)
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par exécuter la reproduction Python avec mypy 1.5.1 et comparez l’erreur de mise à jour signalée avec l’exemple de mise à jour itérative. Suivez le typage utilisé pour MutableMapping.update et ajoutez un test de régression montrant que dict[int, int] peut mettre à jour Dict[Union[int, str], int] sans erreur.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- devtools
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100