nested isinstances lose type information
Ouverte
Personne n'a encore pris cette issue.
bug
false-positive
topic-join-v-union
topic-type-narrowing
topic-union-types
- 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
x = object()
if isinstance(x, (int, str)):
reveal_type(x) # Union[int, str]
if isinstance(x, int):
pass
reveal_type(x) # object
Expected Behavior
both types revealed as Union[int, str]
Actual Behavior
object from second type
Your Environment
- Mypy version used: latest master (0.820+dev.72ac2cee910ca61bfdf449217328b6d10b45d378)
- Mypy command-line flags: none
- Mypy configuration options from
mypy.ini(and other config files): none - Python version used: 3.7.3
- Operating system and version: debian 10 based linux distro
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
Utilisez le reproducteur Python fourni comme cas de régression et examinez les tests existants de mypy concernant le narrowing de type fondé sur isinstance. La correction est terminée lorsque les deux appels à reveal_type conservent Union[int, str], tout en continuant à couvrir par des tests le comportement de narrowing environnant.
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