Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

`UseEnum` does not work with str enum

Ouverte
#827 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

@sap1110 y travaille déjà.

Depuis le 17/8/2026.

  • #979 par @sap1110 — ouverte

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
45/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
python
Domaine
tooling

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

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.

Autres issues de ipython/traitlets

Toutes les issues de ipython/traitlets

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

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