diff options
Diffstat (limited to 'Pb_Api')
| -rw-r--r-- | Pb_Api/ImPattern/Params.py | 2 | ||||
| -rw-r--r-- | Pb_Api/Param/Image_Url.py | 2 | ||||
| -rw-r--r-- | Pb_Api/Param/MultiSelect.py | 41 | ||||
| -rw-r--r-- | Pb_Api/Param/String.py | 4 | ||||
| -rw-r--r-- | Pb_Api/Param/Username.py | 6 | ||||
| -rw-r--r-- | Pb_Api/Param/__init__.py | 57 | ||||
| -rw-r--r-- | Pb_Api/Params.py | 51 |
7 files changed, 96 insertions, 67 deletions
diff --git a/Pb_Api/ImPattern/Params.py b/Pb_Api/ImPattern/Params.py index c308ed1..c01fd4d 100644 --- a/Pb_Api/ImPattern/Params.py +++ b/Pb_Api/ImPattern/Params.py @@ -14,5 +14,5 @@ class ImPattern_Params(Pb_Api_Params): self.params = [ Pb_Api_Param_Username(name="username", required=1), Pb_Api_Param_Image_Url(name="image_url", required=1), -# Pb_Api_Param_MultiSelect(name="pattern_url", required=1, options=pattern_url_options) + Pb_Api_Param_MultiSelect(name="pattern_url", required=1, options=pattern_url_options) ] diff --git a/Pb_Api/Param/Image_Url.py b/Pb_Api/Param/Image_Url.py index f5e91b9..bd22513 100644 --- a/Pb_Api/Param/Image_Url.py +++ b/Pb_Api/Param/Image_Url.py @@ -4,4 +4,4 @@ from Pb_Api.Param.String import Pb_Api_Param_String class Pb_Api_Param_Image_Url(Pb_Api_Param_String): def __init__(self, *args, **kwargs): super(Pb_Api_Param_Image_Url, self).__init__(*args, **kwargs) - self.value(TEST_URL, default=1) + self.default(TEST_URL) diff --git a/Pb_Api/Param/MultiSelect.py b/Pb_Api/Param/MultiSelect.py index 4ddf11e..2c8c32c 100644 --- a/Pb_Api/Param/MultiSelect.py +++ b/Pb_Api/Param/MultiSelect.py @@ -1,17 +1,40 @@ +import random from Pb_Api.Param import Pb_Api_Param class Pb_Api_Param_MultiSelect(Pb_Api_Param): def __init__(self, *args, **kwargs): - super(Pb_Api_Param_MultiSelect, self).__init__(*args, **kwargs) self._options = kwargs['options'] + super(Pb_Api_Param_MultiSelect, self).__init__(*args, **kwargs) def options(self): return self._options - def value(self, *args): - if len(args) > 1: - valid = False - for i in self.options(): - if args[0] == i['value']: valid = True - if not valid : raise ValueError - super(Pb_Api_Param_MultiSelect, self).value(args[0]) + + @property + def value(self): + return super(Pb_Api_Param_MultiSelect, self).get_value() + @value.setter + def value(self, value): + valid = False + for i in self.options(): + if value == i['value']: valid = True + if value is None: valid = True + if not valid : raise ValueError + super(Pb_Api_Param_MultiSelect, self).set_value(value) def randomize(self): - pass + weights_total = sum(map(lambda x: x["weight"], self.options())) + choice = random.randint(0, weights_total) + position = 0 + for elem in self.options(): + position += elem["weight"] + if position >= choice: + self.value = elem["value"] + break + def heaviest(self, param): + heaviest_idx = 0 + heaviest_weight = 0 + idx = 0 + for elem in self.options(): + if elem["weight"] > heaviest_weight: + heaviest_weight = elem["weight"] + heaviest_idx = idx; + idx += 1 + self.value = self.options()[heaviest_idx]["value"] diff --git a/Pb_Api/Param/String.py b/Pb_Api/Param/String.py index a1161a8..3c186f4 100644 --- a/Pb_Api/Param/String.py +++ b/Pb_Api/Param/String.py @@ -1,4 +1,4 @@ from Pb_Api.Param import Pb_Api_Param class Pb_Api_Param_String(Pb_Api_Param): - def __init__(self, *args, **kwargs): - super(Pb_Api_Param_String, self).__init__(*args, **kwargs) + def __init__(self, **kwargs): + super(Pb_Api_Param_String, self).__init__(**kwargs) diff --git a/Pb_Api/Param/Username.py b/Pb_Api/Param/Username.py index 3b691e8..5bd3237 100644 --- a/Pb_Api/Param/Username.py +++ b/Pb_Api/Param/Username.py @@ -2,6 +2,6 @@ from config import USERNAME from Pb_Api.Param.String import Pb_Api_Param_String class Pb_Api_Param_Username(Pb_Api_Param_String): - def __init__(self, *args, **kwargs): - super(Pb_Api_Param_Username, self).__init__(*args, **kwargs) - self.value(USERNAME, default=1) + def __init__(self, **kwargs): + super(Pb_Api_Param_Username, self).__init__(**kwargs) + self.default(USERNAME) diff --git a/Pb_Api/Param/__init__.py b/Pb_Api/Param/__init__.py index 62d05ea..362a3f7 100644 --- a/Pb_Api/Param/__init__.py +++ b/Pb_Api/Param/__init__.py @@ -1,25 +1,38 @@ -class Pb_Api_Param(object): - def __init__(self, *args, **kwargs): - self._name = kwargs['name'] - self._value = kwargs['value'] - def name(self): - return self._name - def required(self): - return self._required +import pprint - def is_default(self, a=0): - if a: self._is_default = 1 - return self._is_default +class Pb_Api_Param(object): +# def __init__(self, **kwargs): + def __init__(self, required=0, set_by_user=0, value=None, name=None, **kwargs): + self._value_default = None + self.name = name + self.required = required + self.is_ready = 0 #should I try that? + self.value = value + self.set_by_user = set_by_user + def __str__(self): + return pprint.pformat(vars(self)) - def value(self, *args, **kwargs): - if len(args) >= 1: - self._value = args[0] - if 'default' in kwargs: - self.is_default(1) - self.is_ready(1) - return self._value + def get_value(self): + if self.set_by_user == 1: + return self._value + return self._value_default + def set_value(self, value): + self._value = value + if not self._value is None: + self.is_ready = 1 + self.set_by_user = 1 #like that? yeah also need method for setting default value + value = property(get_value, set_value) - def is_ready(self, *args): - if len(args) >= 1: - self._is_ready = args[0] - return self._is_ready or not self.required() + def default(self, value): + self._value_default = value + + @property + def is_ready(self): + return self._is_ready or not self.required + @is_ready.setter + def is_ready(self, n): + self._is_ready = n + + + def randomize(self): + pass diff --git a/Pb_Api/Params.py b/Pb_Api/Params.py index b96a9af..fff0696 100644 --- a/Pb_Api/Params.py +++ b/Pb_Api/Params.py @@ -1,41 +1,34 @@ +import pprint class Pb_Api_Params(object): - def _weighted_choice(self, param): - weights_total = sum(map(lambda x: x["weight"], param)) - choice = random.randint(0, weights_total) - position = 0 - for elem in param: - position += elem["weight"] - if position >= choice: - return elem["value"] - def _default_choice(self, param): - heaviest_idx = 0 - heaviest_weight = 0 - idx = 0 - for elem in param: - if elem["weight"] > heaviest_weight: - heaviest_weight = elem["weight"] - heaviest_idx = idx; - idx += 1 - return param[heaviest_idx]["value"] + #so how do we need to change these? + def param(self, name): + for p in self.params: + if p.name == name: + return p + return None + + def __str__(self): + return pprint.pformat({ "params": map(lambda x: vars(x), self.params) }) + +#do we need to add a simple __iter__ attribute to that class so that map will work, or is it already +#iterating? it is already + + + def randomize(self): for el in self.params: - if el.manually_set: + if el.set_by_user: continue el.randomize() + + def is_ready(self): - for p in self.params(): + for p in self.params: if not p.is_ready(): return 0 return 1 - def params(self): - return self._params - def param(self, name): - for p in self.params(): - if p.name() == name: - return p - return None def as_hash(self): result = {} - for p in self.params(): - result[p.name()] = p.value() + for p in self.params: + result[p.name] = p.value return result |
