fix: better doc for calculation with unknown variable

This commit is contained in:
egarette@silique.fr 2025-09-29 21:19:13 +02:00
parent dcb1800346
commit 4bf7274871
3 changed files with 22 additions and 10 deletions

View file

@ -674,11 +674,13 @@ class VariableCalculation(_VariableCalculation):
) = self.get_variable(objectspace) ) = self.get_variable(objectspace)
if ( if (
not variable_in_calculation not variable_in_calculation
and self.optional and (self.optional
or (objectspace.force_optional and self.attribute_name == "default") or objectspace.force_optional)
): ):
if self.default is not undefined: if self.default is not undefined:
return self.get_default_value_optional(objectspace, self.default) return self.get_default_value_optional(objectspace, self.default)
if self.default_values is not None:
return self.default_values
raise VariableCalculationDependencyError() raise VariableCalculationDependencyError()
if variable_in_calculation and self.attribute_name == "default": if variable_in_calculation and self.attribute_name == "default":
local_variable = objectspace.paths[self.path] local_variable = objectspace.paths[self.path]
@ -720,8 +722,8 @@ class VariablePropertyCalculation(_VariableCalculation):
if ( if (
# self.default is not undefined and # self.default is not undefined and
not variable_in_calculation not variable_in_calculation
and self.optional and (self.optional
or (objectspace.force_optional) or objectspace.force_optional)
): ):
if self.default is undefined: if self.default is undefined:
default = False default = False

View file

@ -226,7 +226,8 @@ class Common:
for val in value: for val in value:
ret = self.calculation_property(val) ret = self.calculation_property(val)
if isinstance(ret, bool): if isinstance(ret, bool):
properties.append(self.convert_str(property_)) if ret:
properties.append(self.convert_str(property_))
elif ret is not None: elif ret is not None:
calc_properties.append(ret) calc_properties.append(ret)
if properties or calc_properties: if properties or calc_properties:
@ -244,6 +245,7 @@ class Common:
return None return None
return value return value
def calc_properties( def calc_properties(
self, self,
prop, prop,
@ -462,9 +464,14 @@ class Variable(Common):
) )
return return
if self.elt.type == "choice": if self.elt.type == "choice":
keys["values"] = self.populate_calculation( try:
self.elt.choices, return_a_tuple=True keys["values"] = self.populate_calculation(
) self.elt.choices, return_a_tuple=True
)
if keys["values"] == '(,)':
keys["values"] = tuple()
except VariableCalculationDependencyError:
keys["values"] = tuple()
if self.elt.type == "regexp": if self.elt.type == "regexp":
self.object_type = "Regexp_" + self.option_name self.object_type = "Regexp_" + self.option_name
self.tiramisu.text["header"].append( self.tiramisu.text["header"].append(
@ -537,7 +544,10 @@ class Family(Common):
if self.group_type: if self.group_type:
keys["group_type"] = self.group_type keys["group_type"] = self.group_type
if self.elt.type == "dynamic": if self.elt.type == "dynamic":
keys["identifiers"] = self.populate_calculation(self.elt.dynamic) try:
keys["identifiers"] = self.populate_calculation(self.elt.dynamic)
except VariableCalculationDependencyError:
keys["identifiers"] = []
children = [] children = []
for path in self.objectspace.parents[self.elt.path]: for path in self.objectspace.parents[self.elt.path]:
children.append(self.objectspace.paths[path]) children.append(self.objectspace.paths[path])

View file

@ -433,7 +433,7 @@ class ConvertDynOptionDescription(DynOptionDescription):
if "{{ identifier }}" in display: if "{{ identifier }}" in display:
return display.replace( return display.replace(
"{{ identifier }}", "{{ identifier }}",
self.convert_identifier_to_path(self.get_identifiers(subconfig)[-1]), self.convert_identifier_to_path(self.get_identifiers(subconfig, from_display_name=True)[-1]),
) )
return display return display