Literal infers tuple literal as Union of the items though this syntax is forbidden by PEP 586
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
The section Illegal parameters for Literal at type check time describes that tuple literals inside Literal are forbidden:
Tuples containing valid literal types like
Literal[(1, "foo", "bar")]. The user could always express this type asTuple[Literal[1], Literal["foo"], Literal["bar"]]instead. Also, tuples are likely to be confused with theLiteral[1, 2, 3]shortcut.
Nevertheless mypy seems to be taking this shortcut since it doesn't flag the following code:
from typing_extensions import Literal
a : Literal[(1, 2)] = 1
Python 3.7, mypy 0.740, typing-extensions 3.7.4.
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’extrait Python signalé avec Literal[(1, 2)] et confirmez si mypy l’accepte. Localisez le chemin de vérification de type de Literal et ses tests existants ; le travail est considéré comme terminé lorsque les littéraux de tuple dans Literal sont refusés conformément à PEP 586.
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é
- Plutôt claire
- Accessibilité débutants
- 45/100