diff options
Diffstat (limited to 'ricky/param/numberrange.py')
| -rw-r--r-- | ricky/param/numberrange.py | 52 |
1 files changed, 32 insertions, 20 deletions
diff --git a/ricky/param/numberrange.py b/ricky/param/numberrange.py index 37b85e3..5ecd165 100644 --- a/ricky/param/numberrange.py +++ b/ricky/param/numberrange.py @@ -1,27 +1,39 @@ -import sys -from ricky.param.multiselect import MultiSelect import random -class NumberRange(MultiSelect): +from ricky.param import Param + + +class NumberRange(Param): def __init__(self, **kwargs): - super(NumberRange, self).__init__(**kwargs) - self.range_min = kwargs['min'] - self.range_max = kwargs['max'] + super(Param, self).__init__() + self.range_min = kwargs['min'] + self.range_max = kwargs['max'] + def randomize(self): - weights_total = sum(map(lambda x: x["weight"], self.options())) + self.range_max - self.range_min - choice = random.randint(0, weights_total) - position = 0 - for elem in self.options(): - position += elem["weight"] - if position >= choice: - self.value = elem["value"] - return - self.value = random.randint(self.range_min,self.range_max) + weights_total = sum( + map(lambda x: x["weight"], self.options()) + ) + self.range_max - self.range_min + choice = random.randint(0, weights_total) + position = 0 + for elem in self.options(): + position += elem["weight"] + if position >= choice: + self.value = elem["value"] + return + self.value = random.randint(self.range_min, self.range_max) + @property def value(self): - return super(MultiSelect, self).value_get() + return super(Param, self).value_get() + @value.setter def value(self, value): - self._value = value - if not self._value is None: - self.is_ready = 1 - self.set_by_user = 1 + self._value = value + if 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 + ) + ) + if self._value is not None: + self.is_ready = 1 + self.set_by_user = 1 |
