fix: add dependency for calculation in choice values

This commit is contained in:
egarette@silique.fr 2025-05-23 17:58:35 +02:00
parent ebc9779173
commit ac35f2428b
2 changed files with 11 additions and 2 deletions

View file

@ -162,6 +162,10 @@ def test_choiceoption_calc_opt_function(config_type):
cfg = get_config(cfg, config_type)
assert cfg.option('choice').owner.isdefault()
#
dep = cfg.option('str').dependencies()
assert len(dep) == 1
assert dep[0].path() == 'choice'
#
cfg.option('choice').value.set('val1')
assert cfg.option('choice').owner.get() == owner
#

View file

@ -21,11 +21,12 @@
"""ChoiceOption
"""
from typing import Any
from itertools import chain
from ..setting import undefined
from ..i18n import _
from .option import Option
from ..autolib import Calculation, get_calculated_value
from ..autolib import Calculation, get_calculated_value, ParamOption
from ..error import ConfigError, display_list
@ -42,7 +43,11 @@ class ChoiceOption(Option):
"""
:param values: is a list of values the option can possibly take
"""
if not isinstance(values, (Calculation, tuple)):
if isinstance(values, Calculation):
for param in chain(values.params.args, values.params.kwargs.values()):
if isinstance(param, ParamOption):
param.option._add_dependency(self)
elif not isinstance(values, tuple):
raise TypeError(
_("values must be a tuple or a calculation for {0}").format(name)
)