diff --git a/module_build_service/config.py b/module_build_service/config.py index e2e2fbe..34f62e3 100644 --- a/module_build_service/config.py +++ b/module_build_service/config.py @@ -350,22 +350,23 @@ class Config(object): raise Exception("Configuration item's name is not allowed: %s" % key) # Create the empty self._key attribute, so we can assign to it. - setattr(self, "_" + key, None) - - # Create self.key property to access the self._key attribute. - # Use the setifok_func if available for the attribute. - setifok_func = '_setifok_{}'.format(key) - if hasattr(self, setifok_func): - setx = lambda self, val: getattr(self, setifok_func)(val) - elif value_type == Path: - # For paths, expanduser. - setx = lambda self, val: setattr( - self, "_" + key, os.path.expanduser(val)) - else: - setx = lambda self, val: setattr(self, "_" + key, val) - getx = lambda self: getattr(self, "_" + key) - delx = lambda self: delattr(self, "_" + key) - setattr(Config, key, property(getx, setx, delx)) + if not hasattr(self, "_" + key): + setattr(self, "_" + key, None) + + # Create self.key property to access the self._key attribute. + # Use the setifok_func if available for the attribute. + setifok_func = '_setifok_{}'.format(key) + if hasattr(self, setifok_func): + setx = lambda self, val: getattr(self, setifok_func)(val) + elif value_type == Path: + # For paths, expanduser. + setx = lambda self, val: setattr( + self, "_" + key, os.path.expanduser(val)) + else: + setx = lambda self, val: setattr(self, "_" + key, val) + getx = lambda self: getattr(self, "_" + key) + delx = lambda self: delattr(self, "_" + key) + setattr(Config, key, property(getx, setx, delx)) # managed/registered configuration items if key in self._defaults: