Compare commits

..

No commits in common. "43d3046e4c3a183aa43296747b96091dcf62c02d" and "7e8940252b2627300b3ea95fc111d87cea3fdf75" have entirely different histories.

10 changed files with 17 additions and 69 deletions

View file

@ -4,7 +4,7 @@ requires = ["flit_core >=3.8.0,<4"]
[project] [project]
name = "tiramisu" name = "tiramisu"
version = "5.2.0a16" version = "5.2.0a15"
authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}] authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}]
readme = "README.md" readme = "README.md"
description = "an options controller tool" description = "an options controller tool"

View file

@ -1 +1 @@
__version__ = "5.2.0a16" __version__ = "5.2.0a15"

View file

@ -420,7 +420,7 @@ class _TiramisuOptionOptionDescription:
index = self._index index = self._index
parent = self._subconfig.parent parent = self._subconfig.parent
parent_option = parent.option parent_option = parent.option
for is_default, woption in self._subconfig.option.get_dependencies( for woption in self._subconfig.option.get_dependencies(
self._config_bag.context self._config_bag.context
): ):
option = woption() option = woption()
@ -428,10 +428,6 @@ class _TiramisuOptionOptionDescription:
for subconfig in context.get_dynamic_from_dyn_option( for subconfig in context.get_dynamic_from_dyn_option(
self._subconfig, option self._subconfig, option
): ):
if subconfig.properties is None:
subconfig.properties = undefined
if is_default and subconfig.config_bag.context.get_owner(subconfig) != owners.default:
continue
options.append( options.append(
TiramisuOption( TiramisuOption(
subconfig.path, subconfig.path,
@ -443,8 +439,6 @@ class _TiramisuOptionOptionDescription:
for subconfig in context.get_dynamic_from_dyn_option( for subconfig in context.get_dynamic_from_dyn_option(
self._subconfig, option self._subconfig, option
): ):
if is_default and subconfig.config_bag.context.get_owner(subconfig) != owners.default:
continue
options.append( options.append(
TiramisuOption( TiramisuOption(
subconfig.path, subconfig.path,
@ -466,18 +460,13 @@ class _TiramisuOptionOptionDescription:
else: else:
current_indexes = [None] current_indexes = [None]
for current_index in current_indexes: for current_index in current_indexes:
t_option = TiramisuOption( options.append(
TiramisuOption(
option.impl_getpath(), option.impl_getpath(),
current_index, current_index,
self._config_bag, self._config_bag,
allow_dynoption=uncalculated, allow_dynoption=uncalculated,
) )
t_option._set_subconfig()
subconfig = t_option._subconfig
if is_default and subconfig.config_bag.context.get_owner(subconfig) != owners.default:
continue
options.append(
t_option,
) )
return options return options

View file

@ -74,7 +74,6 @@ class CCache:
self.reset_one_option_cache( self.reset_one_option_cache(
subconfig, subconfig,
resetted_opts, resetted_opts,
False,
) )
subconfig.config_bag.properties = subconfig.config_bag.properties | { subconfig.config_bag.properties = subconfig.config_bag.properties | {
"cache" "cache"
@ -87,16 +86,13 @@ class CCache:
self, self,
subconfig, subconfig,
resetted_opts, resetted_opts,
is_default,
): ):
"""reset cache for one option""" """reset cache for one option"""
if subconfig.path in resetted_opts: if subconfig.path in resetted_opts:
return return
resetted_opts.append(subconfig.path) resetted_opts.append(subconfig.path)
config_bag = subconfig.config_bag config_bag = subconfig.config_bag
# if is_default and config_bag.context.get_owner(subconfig) != owners.default: for woption in subconfig.option.get_dependencies(subconfig.option):
# return
for is_default, woption in subconfig.option.get_dependencies(subconfig.option):
option = woption() option = woption()
if option.issubdyn(): if option.issubdyn():
# it's an option in dynoptiondescription, remove cache for all generated option # it's an option in dynoptiondescription, remove cache for all generated option
@ -104,14 +100,12 @@ class CCache:
subconfig, subconfig,
option, option,
resetted_opts, resetted_opts,
is_default,
) )
elif option.impl_is_dynoptiondescription(): elif option.impl_is_dynoptiondescription():
self.reset_cache_dyn_optiondescription( self.reset_cache_dyn_optiondescription(
option, option,
config_bag, config_bag,
resetted_opts, resetted_opts,
is_default,
) )
else: else:
option_subconfig = self.get_sub_config( option_subconfig = self.get_sub_config(
@ -124,7 +118,6 @@ class CCache:
self.reset_one_option_cache( self.reset_one_option_cache(
option_subconfig, option_subconfig,
resetted_opts, resetted_opts,
is_default,
) )
del option del option
subconfig.option.reset_cache( subconfig.option.reset_cache(
@ -156,7 +149,6 @@ class CCache:
option, option,
config_bag, config_bag,
resetted_opts, resetted_opts,
is_default,
): ):
# reset cache for all chidren # reset cache for all chidren
for subconfig in self.get_dynamic_from_dyn_optiondescription( for subconfig in self.get_dynamic_from_dyn_optiondescription(
@ -166,7 +158,6 @@ class CCache:
self.reset_one_option_cache( self.reset_one_option_cache(
subconfig, subconfig,
resetted_opts, resetted_opts,
is_default,
) )
for walk_subconfig in self.walk( for walk_subconfig in self.walk(
subconfig, subconfig,
@ -176,7 +167,6 @@ class CCache:
self.reset_one_option_cache( self.reset_one_option_cache(
walk_subconfig, walk_subconfig,
resetted_opts, resetted_opts,
is_default,
) )
def get_dynamic_from_dyn_option(self, subconfig, option): def get_dynamic_from_dyn_option(self, subconfig, option):
@ -233,13 +223,11 @@ class CCache:
subconfig, subconfig,
option, option,
resetted_opts, resetted_opts,
is_default,
): ):
for dyn_option_subconfig in self.get_dynamic_from_dyn_option(subconfig, option): for dyn_option_subconfig in self.get_dynamic_from_dyn_option(subconfig, option):
self.reset_one_option_cache( self.reset_one_option_cache(
dyn_option_subconfig, dyn_option_subconfig,
resetted_opts, resetted_opts,
is_default,
) )

View file

@ -106,7 +106,7 @@ class Base:
) )
for param in chain(prop.params.args, prop.params.kwargs.values()): for param in chain(prop.params.args, prop.params.kwargs.values()):
if isinstance(param, ParamOption): if isinstance(param, ParamOption):
param.option._add_dependency(self, "property") param.option._add_dependency(self)
if properties: if properties:
_setattr(self, "_properties", properties) _setattr(self, "_properties", properties)
self.set_informations(informations) self.set_informations(informations)
@ -150,12 +150,11 @@ class Base:
def _add_dependency( def _add_dependency(
self, self,
option, option,
type_,
is_identifier: bool = False, is_identifier: bool = False,
) -> None: ) -> None:
woption = weakref.ref(option) woption = weakref.ref(option)
options = self.get_dependencies(None) options = self.get_dependencies(None)
options.add((type_ == "default", woption)) options.add(woption)
self._dependencies = tuple( self._dependencies = tuple(
options options
) # pylint: disable=attribute-defined-outside-init ) # pylint: disable=attribute-defined-outside-init
@ -400,11 +399,7 @@ class BaseOption(Base):
for param in chain(value.params.args, value.params.kwargs.values()): for param in chain(value.params.args, value.params.kwargs.values()):
if isinstance(param, ParamOption): if isinstance(param, ParamOption):
# pylint: disable=protected-access # pylint: disable=protected-access
if is_identifier: param.option._add_dependency(self, is_identifier=is_identifier)
type_ = "identifier"
else:
type_ = "default"
param.option._add_dependency(self, type_, is_identifier=is_identifier)
self._has_dependency = True self._has_dependency = True
elif isinstance(param, ParamInformation): elif isinstance(param, ParamInformation):
dest = self dest = self

View file

@ -47,7 +47,7 @@ class ChoiceOption(Option):
if isinstance(values, Calculation): if isinstance(values, Calculation):
for param in chain(values.params.args, values.params.kwargs.values()): for param in chain(values.params.args, values.params.kwargs.values()):
if isinstance(param, ParamOption): if isinstance(param, ParamOption):
param.option._add_dependency(self, "choice") param.option._add_dependency(self)
elif not isinstance(values, tuple): elif not isinstance(values, tuple):
raise TypeError( raise TypeError(
_("values must be a tuple or a calculation for {0}").format(name) _("values must be a tuple or a calculation for {0}").format(name)

View file

@ -75,7 +75,7 @@ class Leadership(OptionDescription):
# remove empty property for follower # remove empty property for follower
child._properties = frozenset(child._properties - {"empty", "unique"}) child._properties = frozenset(child._properties - {"empty", "unique"})
followers.append(child) followers.append(child)
child._add_dependency(self, "leadership") child._add_dependency(self)
child._leadership = weakref.ref(self) child._leadership = weakref.ref(self)
if __debug__: if __debug__:
leader = children[0] leader = children[0]

View file

@ -55,7 +55,7 @@ class SymLinkOption(BaseOption):
self._name = name self._name = name
self._opt = opt self._opt = opt
self._leadership = None self._leadership = None
opt._add_dependency(self, "symlink") opt._add_dependency(self)
def __getattr__( def __getattr__(
self, self,

View file

@ -143,29 +143,6 @@ RW_REMOVE = frozenset(
) )
PROPERTIES_MAKE_SENSE = (
"cache"
"demoting_error_warning",
"disabled",
"empty",
"everything_frozen",
"expire",
"force_default_on_freeze",
"force_metaconfig_on_freeze",
"force_store_value",
"frozen",
"hidden",
"mandatory",
"notempty",
"notunique",
"novalidator",
"permissive",
"unique",
"validator",
"warnings",
)
FORBIDDEN_SET_PROPERTIES = frozenset(["force_store_value"]) FORBIDDEN_SET_PROPERTIES = frozenset(["force_store_value"])
FORBIDDEN_SET_PERMISSIVES = frozenset( FORBIDDEN_SET_PERMISSIVES = frozenset(
[ [

View file

@ -511,10 +511,9 @@ class Values:
was present was present
:returns: a `setting.owners.Owner` object :returns: a `setting.owners.Owner` object
""" """
s_properties = subconfig.properties
if ( if (
"frozen" in s_properties "frozen" in subconfig.properties
and "force_default_on_freeze" in s_properties and "force_default_on_freeze" in subconfig.properties
): ):
return owners.default return owners.default
if only_default: if only_default:
@ -532,8 +531,8 @@ class Values:
)[1] )[1]
if validate_meta is not False and ( if validate_meta is not False and (
owner is owners.default owner is owners.default
or "frozen" in s_properties or "frozen" in subconfig.properties
and "force_metaconfig_on_freeze" in s_properties and "force_metaconfig_on_freeze" in subconfig.properties
): ):
msubconfig = self._get_modified_parent(subconfig) msubconfig = self._get_modified_parent(subconfig)
if msubconfig is not None: if msubconfig is not None:
@ -542,7 +541,7 @@ class Values:
msubconfig, msubconfig,
only_default=only_default, only_default=only_default,
) )
elif "force_metaconfig_on_freeze" in s_properties: elif "force_metaconfig_on_freeze" in subconfig.properties:
owner = owners.default owner = owners.default
return owner return owner