Unpacking unions of tuples skips type checking
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
mypy applies type checks when passing an unpacked tuple to a function, but it seems to skip the checks when passing a variable that is a union of tuple types.
To Reproduce
def inner(_name: str, _num: int) -> None:
...
# mypy passes as expected
def fun1(name_and_num: tuple[str, int]) -> None:
inner(*name_and_num)
# mypy errors as expected
def fun2(name_and_num: tuple[str, float]) -> None:
inner(*name_and_num)
# mypy passes *but should error*
def fun3(name_and_num: tuple[str, int] | tuple[str, float]) -> None:
inner(*name_and_num)
https://gist.github.com/mypy-play/257f0a56dd44b405b2853e2854333cc2
Expected Behavior
arg-type error on line 14
Actual Behavior
No error on line 14
Your Environment
- Mypy version used: 1.5.1
- Python version used: 3.11.5
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 le comportement avec l’exemple fourni utilisant fun1, fun2 et fun3 sur Python 3.11.5 avec mypy 1.5.1. Suivez le chemin de vérification de types de l’union de tuples décompressée et vérifiez que l’appel dans fun3 signale l’erreur arg-type attendue à la ligne 14.
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é
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 45/100