From 3ed96ef2ada2182d007fbfffbd5c1031c0a098ab Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Thu, 19 Feb 2026 20:47:35 +0100 Subject: [PATCH] fix: ParamDynOption with disabled properties --- tests/test_dyn_optiondescription.py | 12 ++++++++++++ tiramisu/autolib.py | 27 +++++++++++++++++---------- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/tests/test_dyn_optiondescription.py b/tests/test_dyn_optiondescription.py index f3bd238..612cd30 100644 --- a/tests/test_dyn_optiondescription.py +++ b/tests/test_dyn_optiondescription.py @@ -3130,3 +3130,15 @@ def test_dynoption_duplicate_5(): cfg.value.get() with pytest.raises(ConflictError): cfg.option('od.od_val').value.get() + + +def test_dyn_disabled(): + var1 = StrOption("var1", "var1", default=["val1", "val2"], multi=True) + var = StrOption("var", "var", properties=frozenset({"disabled"})) + dyn = DynOptionDescription("dyn", "dyn", identifiers=Calculation(calc_value, Params((ParamOption(var1)))), children=[var]) + var2 = StrOption(name="var2", doc="A variable calculated", default=Calculation(calc_value, Params((ParamDynOption(var, ["val1"]))))) + od = OptionDescription('od', '', [var1, dyn, var2]) + cfg = Config(od) + cfg.property.read_write() + with pytest.raises(ConfigError): + cfg.value.get() diff --git a/tiramisu/autolib.py b/tiramisu/autolib.py index 359ebfd..6e1197e 100644 --- a/tiramisu/autolib.py +++ b/tiramisu/autolib.py @@ -462,7 +462,7 @@ def manager_callback( or param.raisepropertyerror ): raise err from err - raise ConfigError(err, subconfig=subconfig) + raise ConfigError(str(err), subconfig=subconfig) from err except ValueError as err: display_name = subconfig.option.impl_get_display_name( subconfig, with_quote=True @@ -751,21 +751,28 @@ def manager_callback( ) ) else: - new_parents.append( - parent.get_child( - doption, - None, - True, - name=name, + try: + new_parents.append( + parent.get_child( + doption, + None, + True, + name=name, + ) ) - ) + except PropertiesOptionError as err: + # raise PropertiesOptionError (which is catched) because must not add value None in carry_out_calculation + if ( + param.notraisepropertyerror + or param.raisepropertyerror + ): + raise err from err + raise ConfigError(str(err), subconfig=subconfig) from err parents = new_parents - if subconfigs_is_a_list: subconfigs = parents else: subconfigs = parents[0] - else: search_option = param.option subconfigs = subconfig.get_common_child(