API Reference
Enum Classes
strenum contains a collection of subclasses of Python’s enum.Enum that
inherit from str to complement enum.IntEnum in the standard library.
- class strenum.StrEnum
Bases:
str,EnumStrEnum is a Python
enum.Enumthat inherits fromstr. The defaultauto()behavior uses the member name as its value.Example usage:
class Example(StrEnum): UPPER_CASE = auto() lower_case = auto() MixedCase = auto() assert Example.UPPER_CASE == "UPPER_CASE" assert Example.lower_case == "lower_case" assert Example.MixedCase == "MixedCase"
- class strenum.LowercaseStrEnum
Bases:
StrEnumA
StrEnumwhereauto()will convert the name to lowercase to produce each member’s value.Example usage:
class Example(LowercaseStrEnum): UPPER_CASE = auto() lower_case = auto() MixedCase = auto() assert Example.UPPER_CASE == "upper_case" assert Example.lower_case == "lower_case" assert Example.MixedCase == "mixedcase"
New in version 0.4.3.
- class strenum.UppercaseStrEnum
Bases:
StrEnumA
StrEnumwhereauto()will convert the name to UPPERCASE to produce each member’s value.Example usage:
class Example(UppercaseStrEnum): UPPER_CASE = auto() lower_case = auto() MixedCase = auto() assert Example.UPPER_CASE == "UPPER_CASE" assert Example.lower_case == "LOWER_CASE" assert Example.MixedCase == "MIXEDCASE"
New in version 0.4.3.
- class strenum.CamelCaseStrEnum
Bases:
StrEnumA
StrEnumwhereauto()will convert the name to camelCase to produce each member’s value.Example usage:
class Example(CamelCaseStrEnum): UPPER_CASE = auto() lower_case = auto() MixedCase = auto() assert Example.UPPER_CASE == "upperCase" assert Example.lower_case == "lowerCase" assert Example.MixedCase == "mixedCase"
New in version 0.4.5.
- class strenum.PascalCaseStrEnum
Bases:
StrEnumA
StrEnumwhereauto()will convert the name to PascalCase to produce each member’s value.Example usage:
class Example(PascalCaseStrEnum): UPPER_CASE = auto() lower_case = auto() MixedCase = auto() assert Example.UPPER_CASE == "UpperCase" assert Example.lower_case == "LowerCase" assert Example.MixedCase == "MixedCase"
New in version 0.4.5.
- class strenum.KebabCaseStrEnum
Bases:
StrEnumA
StrEnumwhereauto()will convert the name to kebab-case to produce each member’s value.Example usage:
class Example(KebabCaseStrEnum): UPPER_CASE = auto() lower_case = auto() MixedCase = auto() assert Example.UPPER_CASE == "upper-case" assert Example.lower_case == "lower-case" assert Example.MixedCase == "mixed-case"
New in version 0.4.5.
- class strenum.SnakeCaseStrEnum
Bases:
StrEnumA
StrEnumwhereauto()will convert the name to snake_case to produce each member’s value.Example usage:
class Example(SnakeCaseStrEnum): UPPER_CASE = auto() lower_case = auto() MixedCase = auto() assert Example.UPPER_CASE == "upper_case" assert Example.lower_case == "lower_case" assert Example.MixedCase == "mixed_case"
New in version 0.4.5.
- class strenum.MacroCaseStrEnum
Bases:
StrEnumA
StrEnumwhereauto()will convert the name to MACRO_CASE to produce each member’s value.Example usage:
class Example(MacroCaseStrEnum): UPPER_CASE = auto() lower_case = auto() MixedCase = auto() assert Example.UPPER_CASE == "UPPER_CASE" assert Example.lower_case == "LOWER_CASE" assert Example.MixedCase == "MIXED_CASE"
New in version 0.4.6.
- class strenum.CamelSnakeCaseStrEnum
Bases:
StrEnumA
StrEnumwhereauto()will convert the name to camel_Snake_Case to produce each member’s value.Example usage:
class Example(CamelSnakeCaseStrEnum): UPPER_CASE = auto() lower_case = auto() MixedCase = auto() assert Example.UPPER_CASE == "upper_Case" assert Example.lower_case == "lower_Case" assert Example.MixedCase == "mixed_Case"
New in version 0.4.8.
- class strenum.PascalSnakeCaseStrEnum
Bases:
StrEnumA
StrEnumwhereauto()will convert the name to Pascal_Snake_Case to produce each member’s value.Example usage:
class Example(PascalSnakeCaseStrEnum): UPPER_CASE = auto() lower_case = auto() MixedCase = auto() assert Example.UPPER_CASE == "Upper_Case" assert Example.lower_case == "Lower_Case" assert Example.MixedCase == "Mixed_Case"
New in version 0.4.8.
- class strenum.SpongebobCaseStrEnum
Bases:
StrEnumA
StrEnumwhereauto()will convert the name to SpONGEBob_CAse to produce each member’s value.Example usage:
class Example(SpongebobCaseStrEnum): UPPER_CASE = auto() lower_case = auto() MixedCase = auto() assert Example.UPPER_CASE == "uPpER_cAsE" assert Example.lower_case == "lowER_CASe" assert Example.MixedCase == "MixeD_CAse"
New in version 0.4.8.
- class strenum.CobolCaseStrEnum
Bases:
StrEnumA
StrEnumwhereauto()will convert the name to COBOL-CASE to produce each member’s value.Example usage:
class Example(CobolCaseStrEnum): UPPER_CASE = auto() lower_case = auto() MixedCase = auto() assert Example.UPPER_CASE == "UPPER-CASE" assert Example.lower_case == "LOWER-CASE" assert Example.MixedCase == "MIXED-CASE"
New in version 0.4.8.
- class strenum.HttpHeaderCaseStrEnum
Bases:
StrEnumA
StrEnumwhereauto()will convert the name to Http-Header-Case to produce each member’s value.Example usage:
class Example(HttpHeaderCaseStrEnum): UPPER_CASE = auto() lower_case = auto() MixedCase = auto() assert Example.UPPER_CASE == "Upper-Case" assert Example.lower_case == "Lower-Case" assert Example.MixedCase == "Mixed-Case"
New in version 0.4.8.
Mix-in Classes
- class strenum.mixins.Comparable
Customise how your Enum acts when compared to other objects.
Your Enum must implement a
_cmp_valuesmethod which takes the Enum member’s value and the other value and manipulates them into the actual values that can be compared.A case-insensitive StrEnum might look like this:
class HttpHeader(Comparable, KebabCaseStrEnum): ContentType = auto() Host = auto() Accept = auto() XForwardedFor = auto() def _cmp_values(self, other): return self.value.lower(), str(other).lower()
You could then use these headers in case-insensitive comparisons:
assert "Content-Type" == HttpHeader.ContentType assert "content-type" == HttpHeader.ContentType assert "coNtEnt-tyPe" == HttpHeader.ContentType
Note
Your
_cmp_valuesmethod must not returnselfas one of the values to be compared – that would result in infinite recursion. Instead, perform operations onself.valueand return that.Warning
A bug in Python prior to 3.7.1 prevents mix-ins working with Enum subclasses.
New in version 0.4.6.