def __setattr__(self, name, value): option = getattr(self._config, name, None) if option is None: # unknown config option, store to BaseConfig only return super(BaseConfig, self).__setattr__(name, value) if isinstance(value, Value): priority = value.priority value = value.value else: priority = PRIO_RUNTIME if value is None: try: option().set(priority, value) except Exception: pass else: try: if isinstance(value, list) or isinstance(value, tuple): option().set(priority, cfg.VectorString(value)) elif (isinstance(option(), cfg.OptionBool) or isinstance( option(), cfg.OptionChildBool)) and isinstance( value, int): option().set(priority, bool(value)) else: option().set(priority, value) except RuntimeError as e: raise dnf.exceptions.ConfigError(_("Error parsing '%s': %s") % (value, str(e)), raw_error=str(e))
def _search_inside_installroot(self, optname): opt = self._get_option(optname) prio = opt._get_priority() # dont modify paths specified on commandline if prio >= PRIO_COMMANDLINE: return val = opt._get() # if it exists inside installroot use it (i.e. adjust configuration) # for lists any component counts if not isinstance(val, str): if any(os.path.exists(os.path.join(self._get_value('installroot'), p.lstrip('/'))) for p in val): opt._set(cfg.VectorString([self._prepend_installroot_path(p) for p in val]), prio) elif os.path.exists(os.path.join(self._get_value('installroot'), val.lstrip('/'))): opt._set(self._prepend_installroot_path(val), prio)
def _set(self, value, priority=PRIO_RUNTIME): """Set option's value if priority is equal or higher than curent priority.""" if value is None: try: self._option.set(priority, value) except Exception: pass else: try: if isinstance(value, list) or isinstance(value, tuple): self._option.set(priority, cfg.VectorString(value)) elif (isinstance(self._option, cfg.OptionBool) or isinstance(self._option, cfg.OptionChildBool)) and isinstance(value, int): self._option.set(priority, bool(value)) else: self._option.set(priority, value) except RuntimeError as e: raise dnf.exceptions.ConfigError(_("Error parsing '%s': %s") % (value, str(e)), raw_error=str(e))
def __init__(self, default=None): option = cfg.OptionStringList(cfg.VectorString(default)) super(ListOption, self).__init__(option)
def __init__(self, default=None, choices=()): option = cfg.OptionEnumString(default, cfg.VectorString(choices)) super(SelectionOption, self).__init__(option)