`UseEnum` does not work with str enum
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 45/100
Piste de recherche
Commencez par reproduire le comportement signalé de UseEnum avec l’énumération Color présentée dans l’issue, puis examinez la validation de UseEnum et ses tests existants. Ajoutez une couverture pour une énumération basée sur str et vérifiez que l’affectation de la valeur sous-jacente "green" se résout en Color.GREEN sans perturber les affectations d’énumération existantes.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Slightly adapting the UseEnum example to use a str based enum makes it fail to recognize the enum by the value:
import enum
from traitlets import HasTraits, UseEnum
class Color(str, enum.Enum):
RED = "red"
BLUE = "blue"
GREEN = "green"
class MyEntity(HasTraits):
color = UseEnum(Color, default_value=Color.BLUE)
entity = MyEntity(color=Color.RED)
entity.color = Color.GREEN
entity.color = "GREEN"
entity.color = "Color.GREEN"
entity.color = "green"
assert entity.color is Color.GREEN
Raises:
❯ python test_enum.py
Traceback (most recent call last):
File "/home/mnoethe/Projects/test_enum.py", line 16, in <module>
entity.color = "green" # USE: number (as int)
File "/home/mnoethe/.local/conda/envs/cta-dev/lib/python3.9/site-packages/traitlets/traitlets.py", line 729, in __set__
self.set(obj, value)
File "/home/mnoethe/.local/conda/envs/cta-dev/lib/python3.9/site-packages/traitlets/traitlets.py", line 703, in set
new_value = self._validate(obj, value)
File "/home/mnoethe/.local/conda/envs/cta-dev/lib/python3.9/site-packages/traitlets/traitlets.py", line 735, in _validate
value = self.validate(obj, value)
File "/home/mnoethe/.local/conda/envs/cta-dev/lib/python3.9/site-packages/traitlets/traitlets.py", line 3582, in validate
self.error(obj, value)
File "/home/mnoethe/.local/conda/envs/cta-dev/lib/python3.9/site-packages/traitlets/traitlets.py", line 841, in error
raise TraitError(e)
traitlets.traitlets.TraitError: The 'color' trait of a MyEntity instance expected any of ['RED', 'BLUE', 'GREEN'], not the str 'green'.
- Langage dominant
- Python
- Étoiles
- 653
- Forks
- 221
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire 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.
Autres issues de ipython/traitlets
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 65/100
-
Difficulté 1/5 1-3 heures Accessibilité débutants 65/100
-
Add Deprecation of Trait Declarations via Classes to Migration NotesPeut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouvertegood first issue
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
-
Document `TraitType.read_only`Ouvertedocumentation
Difficulté 1/5 Moins d'une heure Accessibilité débutants 65/100
-
traitlets.Set should support generic type annotations for type safetyPeut-être pris @GruffElixir l’a pris il y a 33 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
Toutes les issues de ipython/traitlets
Issues similaires
-
comp/gateway comp/plugins duplicate P3 type/bug
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
NousResearch/hermes-agent#137019 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
bot-triaged module: docs triaged
Difficulté 1/5 1-3 heures Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 1 jour
-
new-entry
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
BinWang28/audio-ai-hub#194 ·
-
confluence: a paged listing's links re-encode a parameter they carry, where real carries it as sentOuvertefidelity
Difficulté 2/5 1-3 heures Accessibilité débutants 63/100
Les mainteneurs répondent en général sous 1 jour