summaryrefslogtreecommitdiff
path: root/meta/model/enum.py
diff options
context:
space:
mode:
authorSefa Eyeoglu <contact@scrumplex.net>2024-06-14 16:59:45 +0200
committerGitHub <noreply@github.com>2024-06-14 16:59:45 +0200
commit395ca19ee418d535158904f2639f5b4fbe574b52 (patch)
tree4ecc30f3aa0fe8d9b79483a823b1a178a3fa618b /meta/model/enum.py
parenta4f59d327a02338b8342d83931758e6a17a85e00 (diff)
parent6706cb5258e023bdada0cb4de0291bc96e113132 (diff)
downloadProject-Tick-395ca19ee418d535158904f2639f5b4fbe574b52.tar.gz
Project-Tick-395ca19ee418d535158904f2639f5b4fbe574b52.zip
Merge pull request #19 from Ryex/javas
Add java runtime metadata
Diffstat (limited to 'meta/model/enum.py')
-rw-r--r--meta/model/enum.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/meta/model/enum.py b/meta/model/enum.py
new file mode 100644
index 0000000000..08dda4bf4a
--- /dev/null
+++ b/meta/model/enum.py
@@ -0,0 +1,32 @@
+import enum
+
+
+class StrEnum(str, enum.Enum):
+ """
+ StrEnum is a Python ``enum.Enum`` that inherits from ``str``. The default
+ ``auto()`` 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"
+ """
+
+ def __new__(cls, value, *args, **kwargs):
+ if not isinstance(value, (str, enum.auto)):
+ raise TypeError(
+ f"Values of StrEnums must be strings: {value!r} is a {type(value)}"
+ )
+ return super().__new__(cls, value, *args, **kwargs)
+
+ def __str__(self):
+ return str(self.value)
+
+ def _generate_next_value_(name, *_):
+ return name