summaryrefslogtreecommitdiff
path: root/ricky/param/enum.py
diff options
context:
space:
mode:
authorpepperpepperpepper <pepper@scannerjammer.com>2015-12-04 22:35:04 -0800
committerpepperpepperpepper <pepper@scannerjammer.com>2015-12-04 22:35:04 -0800
commitf8264bcb55d6f8e8ba3a0df1011df5678c542fdc (patch)
treec8ec5be972dabccffd80b2bf64afa1c23970272f /ricky/param/enum.py
parent74dc301ff9ca7b74541b44f99e42d06bd22d59be (diff)
working
Diffstat (limited to 'ricky/param/enum.py')
-rw-r--r--ricky/param/enum.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/ricky/param/enum.py b/ricky/param/enum.py
new file mode 100644
index 0000000..757bd29
--- /dev/null
+++ b/ricky/param/enum.py
@@ -0,0 +1,33 @@
+import random
+from ricky.param import Param
+
+
+class Enum(Param):
+ def __init__(self, options=None, **kwargs):
+ self._options = options
+ if not self._options:
+ raise ValueError("Object must be initialized with options set")
+ super(Enum, self).__init__(**kwargs)
+ self._validate_options()
+
+ def options(self):
+ return self._options
+
+ def _validate_options(self):
+ try:
+ pass
+ except Exception:
+ raise ValueError('Unable to validate %s\n:' % self.name)
+
+ def value_get(self):
+ return super(Enum, self).value_get()
+
+ def value_set(self, value):
+ if value not in self._options and value is not None:
+ raise ValueError
+ super(Enum, self).value_set(value)
+
+ value = property(value_get, value_set)
+
+ def randomize(self):
+ self.value_set(random.choice(self._options))