Exemple #1
0
def test_get_callable_name():
    def foo(a, b):
        return a + b

    assert utils.get_callable_name(foo) == 'foo'
    # Works for partials, too
    foo_partial = partial(foo, 1)

    assert utils.get_callable_name(foo_partial) == 'foo'
Exemple #2
0
def test_get_callable_name_of_callable_class():
    class Foo(object):
        def __call__(self, val):
            return False

    foo = Foo()
    assert utils.get_callable_name(foo) == 'Foo'
Exemple #3
0
 def _validate(self, value):
     """Perform validation on ``value``. Raise a :exc:`ValidationError` if validation
     does not succeed.
     """
     errors = []
     for validator in self.validators:
         func_name = utils.get_callable_name(validator)
         msg = 'Validator {0}({1}) is False'.format(func_name, value)
         try:
             if validator(value) is False:
                 raise ValidationError(getattr(self, 'error', None) or msg)
         except ValidationError as err:
             if isinstance(err.messages, dict):
                 errors.append(err.messages)
             else:
                 errors.extend(err.messages)
     if errors:
         raise ValidationError(errors)
Exemple #4
0
 def _run_validator(self,
                    validator_func,
                    output,
                    original_data,
                    fields_dict,
                    index=None,
                    strict=False,
                    many=False,
                    pass_original=False):
     try:
         if pass_original:  # Pass original, raw data (before unmarshalling)
             res = validator_func(output, original_data)
         else:
             res = validator_func(output)
         if res is False:
             func_name = utils.get_callable_name(validator_func)
             raise ValidationError(
                 'Schema validator {0}({1}) is False'.format(
                     func_name, dict(output)))
     except ValidationError as err:
         errors = self.get_errors(index=index)
         # Store or reraise errors
         if err.field_names:
             field_names = err.field_names
             field_objs = [fields_dict[each] for each in field_names]
         else:
             field_names = [SCHEMA]
             field_objs = []
         for field_name in field_names:
             if isinstance(err.messages, (list, tuple)):
                 # self.errors[field_name] may be a dict if schemas are nested
                 if isinstance(errors.get(field_name), dict):
                     errors[field_name].setdefault(SCHEMA,
                                                   []).extend(err.messages)
                 else:
                     errors.setdefault(field_name, []).extend(err.messages)
             elif isinstance(err.messages, dict):
                 errors.setdefault(field_name, []).append(err.messages)
             else:
                 errors.setdefault(field_name, []).append(text_type(err))
         if strict:
             raise ValidationError(self.errors,
                                   fields=field_objs,
                                   field_names=field_names)