More specific inline dict type inference can fail on 1.17.0

Ouverte
#19,474 2 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
42/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
python
Domaine
devtools

Piste de recherche

Commencez par la reproduction liée dans mypy playground et comparez son comportement avec 1.16.1, 1.17.0 et master. L’issue ne mentionne aucun fichier ni test du dépôt ; suivez donc, à partir des erreurs reproduites, le chemin d’inférence de type des dictionnaires inline ; c’est terminé lorsque l’exemple ne produit aucune erreur tout en conservant le type inféré attendu.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

bug topic-inference

Bug Report

More specific inline dict type inference can fail on 1.17.0.

To Reproduce

The following fails on 1.17.0 but is fine on 1.16.1 (the playground link uses master as 1.17.0 isn't available there):
https://mypy-play.net/?mypy=master&python=3.13&gist=7e77b89fe5f9cb7e548c4ef83b3783c1

Revealing the type for the inline dict gives:

  • 1.16.1: builtins.dict[builtins.str, Union[typing.Collection[builtins.str], None]]
  • 1.17.0: builtins.dict[builtins.str, builtins.dict[builtins.str, builtins.list[Any] | None] | builtins.dict[builtins.str, builtins.str] | builtins.str | None]

Expected Behavior

No mypy errors.

Actual Behavior

main.py:11: error: Dict entry 0 has incompatible type "str": "None"; expected "str": "str"  [dict-item]
main.py:12: error: Dict entry 1 has incompatible type "str": "list[Never]"; expected "str": "str"  [dict-item]
Found 2 errors in 1 file (checked 1 source file)

Your Environment

  • Mypy version used: 1.17.0
  • Mypy command-line flags: N/A
  • Mypy configuration options from mypy.ini (and other config files): N/A
  • Python version used: 3.13.5
Langage dominant
Python
Étoiles
20.6k
Forks
3.3k
Merge moyen
1 j 18 h
PR mergées (30 j)
54

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de python/mypy

Toutes les issues de python/mypy

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.