python / python/mypy

Literal infers tuple literal as Union of the items though this syntax is forbidden by PEP 586

Ouverte
#7,783 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

topic-literal-types
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 as Tuple[Literal[1], Literal["foo"], Literal["bar"]] instead. Also, tuples are likely to be confused with the Literal[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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. 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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.