EnumWithExplicitSupport#
- class scio.utils.enums.EnumWithExplicitSupport(value)[source]#
Bases:
EnumBase Enum for explicit error message.
In many place in this package, we use
Enumin conjunction withLiteralas follows:from enum import unique @unique class Arg(str, EnumWithExplicitSupport): '''Enum for supported ``arg`` values.''' __slots__ = () VALUE1 = "value1" VALUE2 = "value2" type ArgLike = Arg | Literal["value1", "value2"]
This allows static type checkers to understand direct API calls such as
func("value1"), while also providing runtime sanitization for more complex uses such asfunc(Arg(kw[0])).This
Enumsubclass provides more details about the supported values during runtime errors:>>> Arg("value3") # Also fails type check <traceback> ValueError: 'value3' is not a valid Arg. Supported: 'value1', 'value2'
Finally, it provides a more sensible signature:
>>> from inspect import signature >>> signature(Arg) <Signature (value)>