def set_value(self, obj, value=None): if value is None: if self.default is not None: value = self.default elif self.mandatory: msg = 'No values specified for mandatory parameter {} in {}' raise ConfigError(msg.format(self.name, obj.name)) else: try: value = self.kind(value) except (ValueError, TypeError): typename = self.get_type_name() msg = 'Bad value "{}" for {}; must be {} {}' article = get_article(typename) raise ConfigError( msg.format(value, self.name, article, typename)) current_value = getattr(obj, self.name, None) if current_value is None: setattr(obj, self.name, value) elif not isiterable(current_value): setattr(obj, self.name, value) else: new_value = current_value + [value] setattr(obj, self.name, new_value) if value is not None: if self.allowed_values: self._validate_allowed_values(obj, value) if self.constraint: self._validate_constraint(obj, value)
def set_value(self, obj, value=None): if value is None: if self.default is not None: value = self.default elif self.mandatory: msg = 'No values specified for mandatory parameter {} in {}' raise ConfigError(msg.format(self.name, obj.name)) else: try: value = self.kind(value) except (ValueError, TypeError): typename = self.get_type_name() msg = 'Bad value "{}" for {}; must be {} {}' article = get_article(typename) raise ConfigError(msg.format(value, self.name, article, typename)) current_value = getattr(obj, self.name, None) if current_value is None: setattr(obj, self.name, value) elif not isiterable(current_value): setattr(obj, self.name, value) else: new_value = current_value + [value] setattr(obj, self.name, new_value) if value is not None: if self.allowed_values: self._validate_allowed_values(obj, value) if self.constraint: self._validate_constraint(obj, value)
def get_extension_class(self, name, kind=None): """ Return the class for the specified extension if found or raises ``ValueError``. """ name, _ = self.resolve_alias(name) if kind is None: return self.extensions[name] ext = self.extension_kinds.get(kind) if ext is None: raise ValueError('Unknown extension type: {}'.format(kind)) store = self._get_store(ext) if name not in store: raise NotFoundError('Extensions {} is not {} {}.'.format(name, get_article(kind), kind)) return store[name]