Cannot combine NewType and Literal
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
(This seems related to, but different from, #2448.)
Feature
Allow the creation of a NewType derived from Literal.
Pitch
Currently you can define the following types:
Foo = Literal["foo"]
Bar = NewType("Bar", str)
But you can't do this:
Baz = NewType("Baz", Foo)
If you attempt to, Python won't throw any error, but mypy will complain:
error: Argument 2 to NewType(...) must be subclassable
This prevents a strict definition of a literal-based type: you either have to accept all values of the literal's type or you need to lose the type check benefits of NewType.
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 retracer la façon dont mypy valide le deuxième argument de NewType et représente les types Literal, en utilisant l’exemple Baz = NewType("Baz", Foo) et l’erreur de possibilité de sous-classement signalée. Définissez le comportement attendu de la vérification de types pour un NewType dérivé de Literal, puis ajoutez une couverture montrant la définition acceptée et ses avantages en matière de vérification de types.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- compilers
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100