From d5a54125f7d0ddfabebd547c00043b30e431fc3f Mon Sep 17 00:00:00 2001 From: mcflugen Date: Thu, 1 Apr 2021 22:46:23 -0600 Subject: [PATCH] add ListParameter --- model_metadata/model_parameter.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/model_metadata/model_parameter.py b/model_metadata/model_parameter.py index 897ef50..8d1b2f3 100644 --- a/model_metadata/model_parameter.py +++ b/model_metadata/model_parameter.py @@ -208,6 +208,8 @@ def parameter_from_dict(d): return FileParameter(value, **kwds) elif dtype in ("bool", "boolean"): return BooleanParameter(value, **kwds) + elif dtype in ("list",): + return ListParameter(value, **kwds) else: raise ValueError("{dtype}: unknown parameter type".format(dtype=dtype)) @@ -266,6 +268,23 @@ def value(self): return self._value +class ListParameter(ModelParameterMixIn): + + _dtype = "list" + + def __init__(self, value, **kwds): + self._value = list(value) + self._desc = kwds.get("desc", None) + + @property + def desc(self): + return self._desc + + @property + def value(self): + return self._value + + class NumberParameter(StringParameter, ModelParameterMixIn): _kwds = ("units", "range") @@ -425,6 +444,8 @@ def dtype_str(self): return "float" elif self.dtype is str: return "str" + elif self.dtype is list: + return "list" else: return self.dtype @@ -459,6 +480,8 @@ def norm(param): dtype = float elif dtype in ("str", "string", "file", "choice"): dtype = str + elif dtype in ("list",): + dtype = list if isinstance(range, dict): range = (range["min"], range["max"])