diff options
Diffstat (limited to 'ricky/params.py')
| -rw-r--r-- | ricky/params.py | 89 |
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]) |
