MCPcopy Create free account
hub / github.com/ipython/traitlets / UseEnum

Class UseEnum

traitlets/traitlets.py:4211–4310  ·  view source on GitHub ↗

Use a Enum class as model for the data type description. Note that if no default-value is provided, the first enum-value is used as default-value. .. sourcecode:: python # -- SINCE: Python 3.4 (or install backport: pip install enum34) import enum from traitlets

Source from the content-addressed store, hash-verified

4209
4210
4211class UseEnum(TraitType[t.Any, t.Any]):
4212 """Use a Enum class as model for the data type description.
4213 Note that if no default-value is provided, the first enum-value is used
4214 as default-value.
4215
4216 .. sourcecode:: python
4217
4218 # -- SINCE: Python 3.4 (or install backport: pip install enum34)
4219 import enum
4220 from traitlets import HasTraits, UseEnum
4221
4222
4223 class Color(enum.Enum):
4224 red = 1 # -- IMPLICIT: default_value
4225 blue = 2
4226 green = 3
4227
4228
4229 class MyEntity(HasTraits):
4230 color = UseEnum(Color, default_value=Color.blue)
4231
4232
4233 entity = MyEntity(color=Color.red)
4234 entity.color = Color.green # USE: Enum-value (preferred)
4235 entity.color = "green" # USE: name (as string)
4236 entity.color = "Color.green" # USE: scoped-name (as string)
4237 entity.color = 3 # USE: number (as int)
4238 assert entity.color is Color.green
4239 """
4240
4241 default_value: enum.Enum | None = None
4242 info_text = "Trait type adapter to a Enum class"
4243
4244 def __init__(
4245 self, enum_class: type[t.Any], default_value: t.Any = None, **kwargs: t.Any
4246 ) -> None:
4247 assert issubclass(enum_class, enum.Enum), "REQUIRE: enum.Enum, but was: %r" % enum_class
4248 allow_none = kwargs.get("allow_none", False)
4249 if default_value is None and not allow_none:
4250 default_value = next(iter(enum_class.__members__.values()))
4251 super().__init__(default_value=default_value, **kwargs)
4252 self.enum_class = enum_class
4253 self.name_prefix = enum_class.__name__ + "."
4254
4255 def select_by_number(self, value: int, default: t.Any = Undefined) -> t.Any:
4256 """Selects enum-value by using its number-constant."""
4257 assert isinstance(value, int)
4258 enum_members = self.enum_class.__members__
4259 for enum_item in enum_members.values():
4260 if enum_item.value == value:
4261 return enum_item
4262 # -- NOT FOUND:
4263 return default
4264
4265 def select_by_name(self, value: str, default: t.Any = Undefined) -> t.Any:
4266 """Selects enum-value by using its name or scoped-name."""
4267 assert isinstance(value, str)
4268 if value.startswith(self.name_prefix):

Callers 3

ExampleClass · 0.90
Example2Class · 0.90

Calls

no outgoing calls

Used in the wild real call sites across dependent graphs

searching dependent graphs…