pocketutils.core.enums
Module Contents
- class pocketutils.core.enums.DisjointEnum
An enum that does not have combinations.
- classmethod or_none(s: Union[str, __qualname__]) Optional[__qualname__]
Returns a choice by name (or returns
sitself). ReturnsNoneif the choice is not found.
- classmethod of(s: Union[str, __qualname__]) __qualname__
Returns a choice by name (or returns
sitself).
- class pocketutils.core.enums.FlagEnum
A bit flag that behaves as a set, has a null set, and auto-sets values and names.
Example
class Flavor(FlagEnum): NONE = () BITTER = () SWEET = () SOUR = () UMAMI = () bittersweet = Flavor.BITTER | Flavor.SWEET print(bittersweet.value) # 1 + 2 == 3 print(bittersweet.name) # "bitter|sweet"
Important
The first element must always be the null set (“no flags”) and should be named something like ‘none’, ‘empty’, or ‘zero’
- classmethod or_none(s: Union[str, __qualname__]) Optional[__qualname__]
Returns a choice by name (or returns
sitself).- Returns
Noneif the choice is not found.
- classmethod of(s: Union[str, __qualname__, AbstractSet[Union[str, __qualname__]]]) __qualname__
Returns a choice by name (or
sitself), or a set of those.
- class pocketutils.core.enums.TrueFalseEither
A
pocketutils.core.enums.DisjointEnumof true, false, or unknown.
- class pocketutils.core.enums.MultiTruth
A
pocketutils.core.enums.FlagEnumfor true, false, true+false, and neither.
- class pocketutils.core.enums.CleverEnum
An enum with a
of()method that finds values with limited string/value fixing. Replaces" "and"-"`with_and ignores case inof(). May support an “unmatched” type via_if_not_found(), which can return a fallback value when there is no match.Example
- class Thing(CleverEnum):
BUILDING = () OFFICE_SUPPLY = () POWER_OUTLET = ()
x = Thing.of(“power outlet”)
Example
- class Color(CleverEnum):
RED = () GREEN = () BLUE = () OTHER = ()
@classmethod def _if_not_found(cls, s: Union[str, __qualname__]) -> __qualname__:
# raise XValueError(f”No member for value ‘{s}’”, value=s) from None # ^ # the default implementation logger.warning(f”Color {s} unknown; using {cls.OTHER}”) return cls.OTHER
Important
If
_if_not_found()is overridden, it should return a member value. (In particular, it should never returnNone.)Important
To use with non-uppercase enum values (e.g.
Color.redinstead ofColor.RED), override_fix_lookup()with this:@classmethod def _fix_lookup(cls, s: str) -> str: return s.strip().replace(" ", "_").replace("-", "_").lower() # ^ # changed
- classmethod of(s: Union[str, __qualname__]) __qualname__
Returns a choice by name (or returns
sitself).