diff --git a/python/biopro/devlib/domain.py b/python/biopro/devlib/domain.py index e96a060..bc3f654 100644 --- a/python/biopro/devlib/domain.py +++ b/python/biopro/devlib/domain.py @@ -310,6 +310,8 @@ class ParameterValueDomain(ParameterDomain, metaclass=abc.ABCMeta): return f def valid_para(self, value: Any) -> bool: + if isinstance(value, list): + return True f, t = self.range return f <= float(value) < t @@ -612,8 +614,8 @@ class ParameterCollectionDomain(ParameterDomain, metaclass=abc.ABCMeta): def __init__(self, domain: ParameterDomain): super().__init__() - if isinstance(domain, ParameterCollectionDomain): - raise RuntimeError('cannot compose with parameter collection domain') + # if isinstance(domain, ParameterCollectionDomain): + # raise RuntimeError('cannot compose with parameter collection domain') self._domain = domain diff --git a/python/biopro/devlib/encoder.py b/python/biopro/devlib/encoder.py index 045ab6d..567d992 100644 --- a/python/biopro/devlib/encoder.py +++ b/python/biopro/devlib/encoder.py @@ -119,7 +119,7 @@ class DeviceConfigurationEncoder: e.write(b'L\0') else: - parameter_type = cls._value_type(value[0]) + parameter_type = cls._value_type(min(value)) e.write(b'L') e.write(parameter_type.encode()) e.u8(sz) @@ -153,7 +153,8 @@ class DeviceConfigurationEncoder: if isinstance(value, bool): e.u8(1 if value else 0) - elif isinstance(value, str): + elif isinstance(value, str) or isinstance(value, list): + value = str(value) e.encode_string(value) elif isinstance(value, int): @@ -170,7 +171,7 @@ class DeviceConfigurationEncoder: if isinstance(value, bool): return '?' - elif isinstance(value, str): + elif isinstance(value, str) or isinstance(value, list): return 'p' elif isinstance(value, int):