config is context in ConfigBag

This commit is contained in:
2018-08-02 22:35:40 +02:00
parent c46480a7eb
commit 81666b6303
12 changed files with 123 additions and 270 deletions

View File

@ -140,7 +140,7 @@ class OptionBag:
if self.option != None:
raise Exception('hu?')
if path is None:
path = config_bag.config.cfgimpl_get_description().impl_get_path_by_opt(option)
path = config_bag.context.cfgimpl_get_description().impl_get_path_by_opt(option)
self.path = path
self.index = index
self.option = option
@ -148,7 +148,7 @@ class OptionBag:
def __getattr__(self, key):
if key == 'properties':
settings = self.config_bag.config.cfgimpl_get_settings()
settings = self.config_bag.context.cfgimpl_get_settings()
self.properties = settings.getproperties(self, apply_requires=self.apply_requires)
return self.properties
elif key == 'ori_option':
@ -159,16 +159,16 @@ class OptionBag:
class ConfigBag:
__slots__ = ('config', # link to the current config (context)
__slots__ = ('context', # link to the current config (context)
'_setting_properties', # properties for current config
'force_permissive', # force permissive
'force_unrestraint', # do not validate properties
'_validate', # validate
)
def __init__(self, config, **kwargs):
def __init__(self, context, **kwargs):
self.force_permissive = False
self.force_unrestraint = False
self.config = config
self.context = context
self._validate = True
for key, value in kwargs.items():
setattr(self, key, value)
@ -185,7 +185,7 @@ class ConfigBag:
return None
return self._setting_properties
if key == '_setting_properties':
self._setting_properties = self.config.cfgimpl_get_settings().get_context_properties()
self._setting_properties = self.context.cfgimpl_get_settings().get_context_properties()
if self._validate is False:
self._setting_properties = self._setting_properties - {'validator'}
return self._setting_properties
@ -514,17 +514,13 @@ class Settings(object):
idx = option_bag.index
elif option.impl_is_multi():
is_indexed = True
config_bag = ConfigBag(config=option_bag.config_bag.config,
_setting_properties=option_bag.config_bag._setting_properties,
force_permissive=True,
force_unrestraint=option_bag.config_bag.force_unrestraint,
_validate=option_bag.config_bag._validate)
config_bag = option_bag.config_bag.copy()
config_bag.force_permissive = True
soption_bag = OptionBag()
soption_bag.set_option(option,
reqpath,
idx,
config_bag)
soption_bag.config_bag.force_permissive = True
if option_bag.option == option:
soption_bag.config_bag.force_unrestraint = True
soption_bag.config_bag.validate = False
@ -718,9 +714,8 @@ class Settings(object):
was present
"""
# calc properties
self_properties = option_bag.properties
config_bag = option_bag.config_bag
properties = self_properties & config_bag.setting_properties - {'frozen', 'mandatory', 'empty'}
properties = option_bag.properties & config_bag.setting_properties - {'frozen', 'mandatory', 'empty'}
# remove permissive properties
if (config_bag.force_permissive is True or \