dont change anything if config_error
[tiramisu.git] / tiramisu / value.py
index 911f4a8..578c4ee 100644 (file)
@@ -213,10 +213,11 @@ class Values(object):
                             opt.impl_get_multitype() == multitypes.slave):
                         if not isinstance(value, list):
                             value = [value for i in range(lenmaster)]
-            if opt.impl_is_multi():
-                value = Multi(value, self.context, opt, path, validate)
-            # suppress value if already set
-            self.reset(opt, path)
+            if config_error is None:
+                if opt.impl_is_multi():
+                    value = Multi(value, self.context, opt, path, validate)
+                # suppress value if already set
+                self.reset(opt, path)
         # frozen and force default
         elif is_frozen and 'force_default_on_freeze' in setting[opt]:
             value = self._getdefault(opt)
@@ -224,9 +225,9 @@ class Values(object):
                 value = Multi(value, self.context, opt, path, validate)
         else:
             value = self._getvalue(opt, path, validate)
-        if validate:
+        if config_error is None and validate:
             opt.impl_validate(value, self.context(), 'validator' in setting)
-        if self._is_default_owner(path) and \
+        if config_error is None and self._is_default_owner(path) and \
                 'force_store_value' in setting[opt]:
             self.setitem(opt, value, path, is_write=False)
         if validate_properties: