Compare commits

..

2 commits

8 changed files with 33 additions and 15 deletions

View file

@ -1,3 +1,9 @@
## 1.2.0a33 (2025-09-29)
### Fix
- better doc for calculation with unknown variable
## 1.2.0a32 (2025-09-29) ## 1.2.0a32 (2025-09-29)
### Feat ### Feat

View file

@ -1,6 +1,6 @@
[project] [project]
name = "rougail" name = "rougail"
version = "1.2.0a32" version = "1.2.0a33"
[tool.commitizen] [tool.commitizen]
name = "cz_conventional_commits" name = "cz_conventional_commits"

View file

@ -4,7 +4,7 @@ requires = ["flit_core >=3.8.0,<4"]
[project] [project]
name = "rougail-base" name = "rougail-base"
version = "1.2.0a32" version = "1.2.0a33"
authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}] authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}]
readme = "README.md" readme = "README.md"
description = "A consistency handling system that was initially designed in the configuration management" description = "A consistency handling system that was initially designed in the configuration management"

View file

@ -4,7 +4,7 @@ requires = ["flit_core >=3.8.0,<4"]
[project] [project]
name = "rougail" name = "rougail"
version = "1.2.0a32" version = "1.2.0a33"
authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}] authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}]
description = "A consistency handling system that was initially designed in the configuration management" description = "A consistency handling system that was initially designed in the configuration management"
classifiers = [ classifiers = [
@ -18,7 +18,7 @@ classifiers = [
dependencies = [ dependencies = [
"ruamel.yaml ~= 0.18.6", "ruamel.yaml ~= 0.18.6",
"pydantic ~= 2.9.2", "pydantic ~= 2.9.2",
"rougail-base == 1.2.0a32", "rougail-base == 1.2.0a33",
] ]
[tool.flit.sdist] [tool.flit.sdist]

View file

@ -1 +1 @@
__version__ = "1.2.0a32" __version__ = "1.2.0a33"

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