summaryrefslogtreecommitdiff
path: root/Pb_Api
diff options
context:
space:
mode:
Diffstat (limited to 'Pb_Api')
-rw-r--r--Pb_Api/ImPattern/Params.py2
-rw-r--r--Pb_Api/Param/Image_Url.py2
-rw-r--r--Pb_Api/Param/MultiSelect.py41
-rw-r--r--Pb_Api/Param/String.py4
-rw-r--r--Pb_Api/Param/Username.py6
-rw-r--r--Pb_Api/Param/__init__.py57
-rw-r--r--Pb_Api/Params.py51
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