Exemple #1
0
    def validate(self, value):
        if self._argparse_value is not None:
            value = self._argparse_value
        if value is None:
            if self._default is required:
                raise ValidationError('this value is required')
            else:
                return ConfigValue(None, self._default)
        else:
            values = value.value
            if not isinstance(values, list):
                values = [values]
            validated_list = []
            if len(values) != len(self._types):
                raise ValidationError('bad array size (should be %d, found %d '
                                      'items)' % (len(self._types), len(values)))

            for i, (item, item_type) in enumerate(zip(values, self._types)):
                try:
                    item = item_type.validate(item)
                except ValidationError as err:
                    raise ValidationError('item #%d, %s' % (i, err),
                                          position=value.position)
                else:
                    validated_list.append(item)
            return ConfigValue(value.name, validated_list, position=value.position)
Exemple #2
0
 def p_assignation(self, p):
     """assignment : NAME ASSIGN value
                   | NAME ASSIGN list"""
     position = Position(self._input_name, p.lineno(3),
                         p.lexer.column(p.lexpos(3)))
     value = ConfigValue(p[1], p[3], position=position)
     p[0] = value
Exemple #3
0
 def p_section_args(self, p):
     """section_args : value LIST_SEP section_args
                     | value"""
     if len(p) == 2:
         position = Position(self._input_name, p.lineno(1),
                             p.lexer.column(p.lexpos(1)))
         p[0] = ConfigValue('<args>', [p[1]], position=position)
     else:
         p[3].value.insert(0, p[1])
         p[0] = p[3]
Exemple #4
0
 def validate(self, value):
     if self._argparse_value is not None:
         value = self._argparse_value
     if value is None:
         if self._default is required:
             raise ValidationError('this value is required')
         else:
             return ConfigValue(None, self._default)
     else:
         if isinstance(value.value, list):
             if len(value.value) == 1:
                 value.value = value.value[0]
             else:
                 raise ValidationError('%r is a list' % value.value,
                                       position=value.position)
         try:
             validated_value = self._type.validate(value.value)
         except ValidationError as err:
             raise ValidationError(str(err), position=value.position)
         return ConfigValue(value.name, validated_value, position=value.position)
Exemple #5
0
 def validate(self, value):
     if self._argparse_value is not None:
         value = self._argparse_value
     if value is None:
         if self._default is required:
             raise ValidationError('this value is required')
         else:
             return ConfigValue(None, self._default)
     else:
         if isinstance(value.value, list):
             if len(value.value) == 1:
                 value.value = value.value[0]
             else:
                 raise ValidationError('%r is a list' % value.value,
                                       position=value.position)
         if value.value in self._choices:
             return ConfigValue(value.name, self._choices[value.value],
                                position=value.position)
         else:
             choices = ', '.join(repr(x) for x in self._choices)
             raise ValidationError('bad choice (must be one of %s)' % choices)
Exemple #6
0
 def validate(self, value):
     if self._argparse_value is not None:
         value = self._argparse_value
     if value is None:
         if self._default is required:
             raise ValidationError('this value is required')
         else:
             return ConfigValue(None, self._default)
     else:
         values = value.value
         if not isinstance(values, list):
             values = [values]
         validated_list = []
         for i, item in enumerate(values):
             try:
                 item = self._type.validate(item)
             except ValidationError as err:
                 raise ValidationError('item #%d, %s' % (i, err),
                                       position=value.position)
             else:
                 validated_list.append(item)
         return ConfigValue(value.name, validated_list, position=value.position)
Exemple #7
0
 def __call__(self, parser, namespace, values, option_string=None):
     if self._const is not None:
         value._argparse_value = ConfigValue(name, self._const)
     else:
         value._argparse_value = ConfigValue(name, values[0])
Exemple #8
0
 def __call__(self, parser, namespace, values, option_string=None):
     value._argparse_value = ConfigValue(name, values)