Compare commits

..

No commits in common. "3fad16d0acb1af93d9d7e748b20dc1f254707162" and "be637e4e310dcbba32f1792682393fdb1afdf630" have entirely different histories.

4 changed files with 5 additions and 12 deletions

View file

@ -536,10 +536,6 @@ def test_callback_dyndescription_subdyn():
cfg = Config(od2) cfg = Config(od2)
cfg.property.read_write() cfg.property.read_write()
assert parse_od_get(cfg.value.get()) == {'od.dod2val1.dodval1.st': 'val1', 'od.dod2val1.dodval2.st': 'val1', 'od.dod2val1.out': ['val1', 'val1'], 'od.dod2val2.dodval1.st': 'val1', 'od.dod2val2.dodval2.st': 'val1', 'od.dod2val2.out': ['val1', 'val1'], 'lst': ['val1', 'val2']} assert parse_od_get(cfg.value.get()) == {'od.dod2val1.dodval1.st': 'val1', 'od.dod2val1.dodval2.st': 'val1', 'od.dod2val1.out': ['val1', 'val1'], 'od.dod2val2.dodval1.st': 'val1', 'od.dod2val2.dodval2.st': 'val1', 'od.dod2val2.out': ['val1', 'val1'], 'lst': ['val1', 'val2']}
cfg.option('lst').value.set(["val1", "val3"])
assert parse_od_get(cfg.value.get()) == {'od.dod2val1.dodval1.st': 'val1', 'od.dod2val1.dodval3.st': 'val1', 'od.dod2val1.out': ['val1', 'val1'], 'od.dod2val3.dodval1.st': 'val1', 'od.dod2val3.dodval3.st': 'val1', 'od.dod2val3.out': ['val1', 'val1'], 'lst': ['val1', 'val3']}
cfg.option('lst').value.set(["val1", "val3", None])
assert parse_od_get(cfg.value.get()) == {'od.dod2val1.dodval1.st': 'val1', 'od.dod2val1.dodval3.st': 'val1', 'od.dod2val1.out': ['val1', 'val1'], 'od.dod2val3.dodval1.st': 'val1', 'od.dod2val3.dodval3.st': 'val1', 'od.dod2val3.out': ['val1', 'val1'], 'lst': ['val1', 'val3', None]}
def test_callback_list_dyndescription(): def test_callback_list_dyndescription():

View file

@ -275,7 +275,6 @@ class _TiramisuOptionWalk:
validate_properties, validate_properties,
uncalculated=uncalculated, uncalculated=uncalculated,
with_index=with_index, with_index=with_index,
check_dynamic_without_identifiers=False,
): ):
options.append( options.append(
TiramisuOption( TiramisuOption(

View file

@ -396,7 +396,6 @@ class SubConfig:
*, *,
uncalculated: bool = False, uncalculated: bool = False,
with_index: bool = True, with_index: bool = True,
check_dynamic_without_identifiers: bool = True,
): ):
if self.option.impl_is_leadership() and not uncalculated and with_index: if self.option.impl_is_leadership() and not uncalculated and with_index:
yield from self.get_leadership_children(validate_properties) yield from self.get_leadership_children(validate_properties)
@ -427,7 +426,8 @@ class SubConfig:
child, child,
None, None,
validate_properties, validate_properties,
check_dynamic_without_identifiers=check_dynamic_without_identifiers, allow_dynoption=uncalculated,
check_dynamic_without_identifiers=not uncalculated,
) )
except PropertiesOptionError as err: except PropertiesOptionError as err:
if err.proptype in (["mandatory"], ["empty"]): if err.proptype in (["mandatory"], ["empty"]):
@ -452,6 +452,7 @@ class SubConfig:
validate_properties: bool, validate_properties: bool,
*, *,
properties=undefined, properties=undefined,
allow_dynoption: bool = False,
identifier: Optional[str] = None, identifier: Optional[str] = None,
name: Optional[str] = None, name: Optional[str] = None,
check_index: bool = True, check_index: bool = True,
@ -742,11 +743,9 @@ class _Config(CCache):
len_path = len(paths) - 1 len_path = len(paths) - 1
for idx, name in enumerate(paths): for idx, name in enumerate(paths):
if idx != len_path: if idx != len_path:
check_dynamic_without_identifiers=True
index_ = None index_ = None
true_path_ = None true_path_ = None
else: else:
check_dynamic_without_identifiers=not allow_dynoption
index_ = index index_ = index
true_path_ = true_path true_path_ = true_path
@ -797,7 +796,8 @@ class _Config(CCache):
name=name, name=name,
identifier=identifier, identifier=identifier,
true_path=true_path_, true_path=true_path_,
check_dynamic_without_identifiers=check_dynamic_without_identifiers, allow_dynoption=allow_dynoption,
check_dynamic_without_identifiers=not allow_dynoption,
) )
return subconfig return subconfig

View file

@ -402,8 +402,6 @@ class Values:
for option in options: for option in options:
parent = option.parent parent = option.parent
for identifier in identifier_values: for identifier in identifier_values:
if identifier is None:
continue
name = option.option.impl_getname(identifier) name = option.option.impl_getname(identifier)
opt_subconfig = parent.get_child( opt_subconfig = parent.get_child(
option.option, option.option,