Invalid type inference for generic typed dicts
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
Piste de recherche
Aucun fichier du dépôt ni chemin de test n’est indiqué ; commencez par exécuter la reproduction Python fournie avec mypy 1.15.0 et inspectez le type inféré pour params.get('i', 0). C’est terminé lorsque cette expression est inférée comme int plutôt que object, avec une couverture de régression pour le cas générique de TypedDict.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Bug Report
When we try to assert the type of an object obtained from get with default value from generic object bound to typed dict, then mypy shows next error:
error: Incompatible types in assignment (expression has type "object", variable has type "int") [assignment]
To Reproduce
from typing import NotRequired, TypedDict, TypeVar
class A(TypedDict):
i: NotRequired[int]
ParamsT = TypeVar('ParamsT', bound=A)
def foo(params: ParamsT) -> None:
i: int = params.get('i', 0)
foo(A())
Gist: https://gist.github.com/mypy-play/effc3f0d297540be8ca1bad7b08c5902
Play: https://mypy-play.net/?mypy=latest&python=3.12&gist=effc3f0d297540be8ca1bad7b08c5902
Expected Behavior
It is expected that result of expression params.get('i', 0) would be of type int since typed dict attribute is annotated as <int> and the default value type is <int> as well.
Actual Behavior
Mypy reports that result of expression params.get('i', 0) has type <object>.
Your Environment
- Mypy version used: mypy 1.15.0 (compiled: yes)
- Python version used: 3.13
- 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
- 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.
Autres issues de python/mypy
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
-
documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
bug topic-configuration topic-error-reporting
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Toutes les issues de python/mypy
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
bancolombia/sentinel#23 ·
-
test md OuverteCI
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
langchain-ai/deepagents#6450 ·
-
bug client
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100