summaryrefslogtreecommitdiff
path: root/ricky/params.py
diff options
context:
space:
mode:
Diffstat (limited to 'ricky/params.py')
-rw-r--r--ricky/params.py89
1 files changed, 53 insertions, 36 deletions
diff --git a/ricky/params.py b/ricky/params.py
index 304ad2d..2b5e6ee 100644
--- a/ricky/params.py
+++ b/ricky/params.py
@@ -1,49 +1,66 @@
+"""base class for all params"""
import sys
import pprint
+
+
class Params(object):
- def __init__(self):
- self._api = None
- self._params = []
+ def __init__(self):
+ self._api = None
+ self._params = []
+
+ def param(self, name):
+ """getter for the param by name"""
+ for param in self._params:
+ if param.name == name:
+ return param
+ return None
- def param(self, name):
- for p in self._params:
- if p.name == name:
- return p
- return None
+ def __str__(self):
+ """string representation"""
+ return pprint.pformat({"params": map(lambda x: vars(x), self._params)})
- def __str__(self):
- return pprint.pformat({ "params": map(lambda x: vars(x), self._params) })
+ def randomize(self):
+ """assign random values to all params, taking into account weight"""
+ for param in self._params:
+ if param.set_by_user:
+ continue
+ param.randomize()
- def randomize(self):
- for el in self._params:
- if el.set_by_user:
- continue
- el.randomize()
- @property
- def api(self):
- return self._api
+ @property
+ def api(self):
+ """property setter for im api"""
+ return self._api
- @api.setter
- def api(self, cls):
- self._api = cls
+ @api.setter
+ def api(self, cls):
+ """property getter for im api"""
+ self._api = cls
+ def execute(self):
+ """calls the associated api"""
+ return self.api.call(self)
- def execute(self):
- return self.api.call(self)
+ def is_ready(self):
+ """test to see if any params with required values are missing"""
+ for param in self._params:
+ if not param.is_ready and not param.default:
+ sys.stderr.write("param not ready: %s\n" % param)
+ return 0
+ return 1
- def is_ready(self):
- for p in self._params:
- if not p.is_ready and not p.default:
- sys.stderr.write("param not ready: {}".format(p))
- return 0
- return 1
+ def __dict__(self):
+ result = {}
+ for param in self._params:
+ result[param.name] = param.value
+ return result
- def __dict__(self):
- result = {}
- for p in self._params:
- result[p.name] = p.value
- return result
+ def as_dict(self):
+ """alias for __dict__"""
+ return self.__dict__()
- def as_dict(self):
- return self.__dict__()
+ def from_dict(self, params_dict):
+ """set param values manually from a dictionary"""
+ for param in self._params:
+ if param.name in params_dict.keys():
+ param.value_set(params_dict[param.name])