diff --git a/src/rougail/annotator/variable.py b/src/rougail/annotator/variable.py index 35e5dbc44..b341a5d82 100644 --- a/src/rougail/annotator/variable.py +++ b/src/rougail/annotator/variable.py @@ -242,7 +242,7 @@ class Annotator(Walk): # pylint: disable=R0903 if calculated_variable.multi is None: if ( isinstance(calculated_variable.default, VariableCalculation) - and variable.path == calculated_variable.default.path + and variable.path == calculated_variable.default.variable ): msg = _( 'the "{0}" default value is a calculation with itself' diff --git a/src/rougail/config/__init__.py b/src/rougail/config/__init__.py index 08f7e1428..4cd7163b1 100644 --- a/src/rougail/config/__init__.py +++ b/src/rougail/config/__init__.py @@ -586,7 +586,6 @@ def _rougail_config( tiram_obj = convert.save() optiondescription = {} - print(tiram_obj) exec(tiram_obj, {}, optiondescription) # pylint: disable=W0122 return optiondescription["option_0"], extra_vars diff --git a/src/rougail/user_data.py b/src/rougail/user_data.py index 0e362b702..08c0e7cc1 100644 --- a/src/rougail/user_data.py +++ b/src/rougail/user_data.py @@ -266,7 +266,7 @@ class UserData: for idx in range(len_leader - 1, -1, -1): option.value.pop(idx) try: - self.set_value(option, value, options) + self.set_value(option, value, options, index) value_is_set = True except Exception as err: if path != option.path(): @@ -398,19 +398,24 @@ class UserData: path, option, self.values[path].get("options", {}), value ) if option.isfollower(): - indexes = range(len(value)) + if not isinstance(value, tuple): + indexes = range(len(value)) + else: + indexes = range(len(option.parent().leader().value.get())) values = value else: indexes = [None] for index in indexes: try: if option.isfollower(): - value = values[index] + if not isinstance(value, tuple): + value = values[index] if value is undefined or isinstance(value, CancelParam): continue - option.index(index).value.set(value) + index_ = index else: - self.set_value(option, value, options.get("options", {})) + index_ = None + self.set_value(option, value, options.get("options", {}), index_) except PropertiesOptionError as err: if err.code == "property-error": properties = display_list( @@ -537,15 +542,19 @@ class UserData: continue raise err from err - def set_value(self, option, value, options): + def set_value(self, option, value, options, index): is_secret_manager = options.get("secret_manager", False) if is_secret_manager and isinstance(value, tuple): # it's a function params = tuple([ParamValue(val) for val in value[1:]]) + if index is not None: + option = option.forcepermissive.index(index) value = Calculation(value[0], Params(params, kwargs={"option": ParamValue(option)})) option = option.forcepermissive add_validation = True else: + if index is not None: + option = option.index(index) add_validation = False option.value.set(value) if add_validation: