summaryrefslogtreecommitdiff
path: root/ricky
diff options
context:
space:
mode:
Diffstat (limited to 'ricky')
-rw-r--r--ricky/param/multiselect.py35
-rw-r--r--ricky/param/numberrange.py9
-rw-r--r--ricky/param/param.py46
3 files changed, 45 insertions, 45 deletions
diff --git a/ricky/param/multiselect.py b/ricky/param/multiselect.py
index ac5c9e7..68df161 100644
--- a/ricky/param/multiselect.py
+++ b/ricky/param/multiselect.py
@@ -4,31 +4,12 @@ from ricky.param import Param
class MultiSelect(Param):
def __init__(self, **kwargs):
- self._options = kwargs.get('options') or []
super(MultiSelect, self).__init__(**kwargs)
- if len(self._options):
- self._validate_options()
- """default value is the option with the heaviest weight"""
- self.default(self._choose_heaviest())
-
- def options(self):
- return self._options
-
- def _validate_options(self):
- try:
- int(self._options[0]['weight'])
- self._options[0]['value']
- except Exception:
- raise ValueError('Unable to validate %s\n:' % self.name)
def value_get(self):
return super(MultiSelect, self).value_get()
def value_set(self, value):
- import sys
- sys.stderr.write("in value set right now for some reason...\n")
- sys.stderr.write("%s\n" % self.name)
- sys.stderr.write("%s\n" % value)
if not any([value == i['value'] for i in self._options]) and \
value is not None:
raise ValueError
@@ -46,19 +27,3 @@ class MultiSelect(Param):
self.value = elem["value"]
break
- def _choose_heaviest(self):
- heaviest_idx = 0
- heaviest_weight = 0
- idx = 0
- if (len(self.options())):
- for elem in self.options():
- if elem["weight"] > heaviest_weight:
- heaviest_weight = elem["weight"]
- heaviest_idx = idx
- idx += 1
- return self.options()[heaviest_idx]["value"]
- else:
- self.randomize()
-
- def heaviest(self):
- self.value = self._choose_heaviest()
diff --git a/ricky/param/numberrange.py b/ricky/param/numberrange.py
index 85314f8..30b9a6a 100644
--- a/ricky/param/numberrange.py
+++ b/ricky/param/numberrange.py
@@ -19,8 +19,10 @@ class NumberRange(Param):
if position >= choice:
self.value = elem["value"]
return
- self.value = random.randint(self.range_min, self.range_max)
-
+
+ val = random.randint(self.range_min, self.range_max)
+ self.value = val
+
@property
def value(self):
return super(NumberRange, self).value_get()
@@ -28,7 +30,8 @@ class NumberRange(Param):
@value.setter
def value(self, value):
self._value = value
- if self._value < self.range_min or self._value > self.range_max:
+ if self._value and \
+ (self._value < self.range_min or self._value > self.range_max):
raise ValueError(
"Value must be between %s and %s\n" % (
self.range_min, self.range_max
diff --git a/ricky/param/param.py b/ricky/param/param.py
index 0d1739f..57c801a 100644
--- a/ricky/param/param.py
+++ b/ricky/param/param.py
@@ -15,6 +15,21 @@ class Param(object):
self.is_ready = 0
self._value = value
self.set_by_user = set_by_user
+ self._options = kwargs.get('options') or []
+ if len(self._options):
+ self._validate_options()
+ """default value is the option with the heaviest weight"""
+ self.default(self._choose_heaviest())
+
+ def options(self):
+ return self._options
+
+ def _validate_options(self):
+ try:
+ int(self._options[0]['weight'])
+ self._options[0]['value']
+ except Exception:
+ raise ValueError('Unable to validate %s\n:' % self.name)
def __str__(self):
return pprint.pformat(vars(self))
@@ -26,13 +41,13 @@ class Param(object):
def value_set(self, value):
self._value = value
- sys.stderr.write("trying to set %s - %s: %s \n" %
- (
- self.__class__.__name__,
- self.name,
- value
- )
- )
+# sys.stderr.write("trying to set %s - %s: %s \n" %
+# (
+# self.__class__.__name__,
+# self.name,
+# value
+# )
+# )
if self._value:
self.is_ready = 1
self.set_by_user = 1
@@ -52,3 +67,20 @@ class Param(object):
def randomize(self):
pass
+
+ def _choose_heaviest(self):
+ heaviest_idx = 0
+ heaviest_weight = 0
+ idx = 0
+ if (len(self.options())):
+ for elem in self.options():
+ if elem["weight"] > heaviest_weight:
+ heaviest_weight = elem["weight"]
+ heaviest_idx = idx
+ idx += 1
+ return self.options()[heaviest_idx]["value"]
+ else:
+ self.randomize()
+
+ def heaviest(self):
+ self.value = self._choose_heaviest()