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)
if (
not variable_in_calculation
and self.optional
or (objectspace.force_optional and self.attribute_name == "default")
and (self.optional
or objectspace.force_optional)
):
if self.default is not undefined:
return self.get_default_value_optional(objectspace, self.default)
if self.default_values is not None:
return self.default_values
raise VariableCalculationDependencyError()
if variable_in_calculation and self.attribute_name == "default":
local_variable = objectspace.paths[self.path]
@ -720,8 +722,8 @@ class VariablePropertyCalculation(_VariableCalculation):
if (
# self.default is not undefined and
not variable_in_calculation
and self.optional
or (objectspace.force_optional)
and (self.optional
or objectspace.force_optional)
):
if self.default is undefined:
default = False

View file

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

View file

@ -433,7 +433,7 @@ class ConvertDynOptionDescription(DynOptionDescription):
if "{{ identifier }}" in display:
return display.replace(
"{{ 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