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 s itself). Returns None if the choice is not found.

classmethod of(s: Union[str, __qualname__]) __qualname__

Returns a choice by name (or returns s itself).

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 s itself).

Returns

None if the choice is not found.

classmethod of(s: Union[str, __qualname__, AbstractSet[Union[str, __qualname__]]]) __qualname__

Returns a choice by name (or s itself), or a set of those.

class pocketutils.core.enums.TrueFalseEither

A pocketutils.core.enums.DisjointEnum of true, false, or unknown.

class pocketutils.core.enums.MultiTruth

A pocketutils.core.enums.FlagEnum for 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 in of(). 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 return None.)

Important

To use with non-uppercase enum values (e.g. Color.red instead of Color.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 s itself).