From a5b63521883c633589f330aebef9713c47fda427 Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Sun, 16 May 2021 06:51:33 +0200 Subject: [PATCH] calc_value: join with multi --- tiramisu/function.py | 41 +++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/tiramisu/function.py b/tiramisu/function.py index 6091530..447b186 100644 --- a/tiramisu/function.py +++ b/tiramisu/function.py @@ -333,14 +333,39 @@ class CalcValue: value = value[index] else: value = None - elif None in value and not allow_none: - value = [] - elif remove_duplicate_value: - new_value = [] - for val in value: - if val not in new_value: - new_value.append(val) - value = new_value + else: + if join is not None: + if None not in value: + length_val = None + for val in value: + if isinstance(val, list): + if None in val: + length_val = None + break + lval = len(val) + if length_val is not None and length_val != lval: + raise ValueError(_(f'unexpected value in calc_value with join attribute "{val}" with invalid length "{length_val}"')) + length_val = lval + new_value = [] + for idx in range(length_val): + idx_val = [] + for val in value: + if isinstance(val, list): + idx_val.append(val[idx]) + else: + idx_val.append(val) + new_value.append(join.join(idx_val)) + value = new_value + else: + value = [] + elif None in value and not allow_none: + value = [] + elif remove_duplicate_value: + new_value = [] + for val in value: + if val not in new_value: + new_value.append(val) + value = new_value return value def value_from_kwargs(self,