Regression in 1.7: mypy loses truthiness constraint for union containing tuple
Ouverte
Personne n'a encore pris cette issue.
bug
topic-type-narrowing
- Langage dominant
- Python
- Étoiles
- 20.6k
- Forks
- 3.3k
- Merge moyen
- 1 j 18 h
- PR mergées (30 j)
- 54
Description
def f(x: bool | tuple[int, int]):
if x:
if x is True or x[0]:
pass
Gives:
main.py:3: error: Value of type "Literal[False] | tuple[int, int]" is not indexable [index]
This error is newly reported after #16237
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 reproduire l’exemple fourni avec mypy et comparez le comportement introduit après l’issue #16237. Suivez la logique de narrowing pour une vérification de truthiness sur une union de bool et tuple. C’est terminé lorsque l’exemple ne signale plus d’erreur d’indexabilité, tout en préservant le narrowing correct pour les autres branches.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 38/100