123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- class Error(Exception):
- """Base validation exception."""
- class SchemaError(Error):
- """An error was encountered in the schema."""
- class Invalid(Error):
- """The data was invalid.
- :attr msg: The error message.
- :attr path: The path to the error, as a list of keys in the source data.
- :attr error_message: The actual error message that was raised, as a
- string.
- """
- def __init__(self, message, path=None, error_message=None, error_type=None):
- Error.__init__(self, message)
- self.path = path or []
- self.error_message = error_message or message
- self.error_type = error_type
- @property
- def msg(self):
- return self.args[0]
- def __str__(self):
- path = ' @ data[%s]' % ']['.join(map(repr, self.path)) \
- if self.path else ''
- output = Exception.__str__(self)
- if self.error_type:
- output += ' for ' + self.error_type
- return output + path
- def prepend(self, path):
- self.path = path + self.path
- class MultipleInvalid(Invalid):
- def __init__(self, errors=None):
- self.errors = errors[:] if errors else []
- def __repr__(self):
- return 'MultipleInvalid(%r)' % self.errors
- @property
- def msg(self):
- return self.errors[0].msg
- @property
- def path(self):
- return self.errors[0].path
- @property
- def error_message(self):
- return self.errors[0].error_message
- def add(self, error):
- self.errors.append(error)
- def __str__(self):
- return str(self.errors[0])
- def prepend(self, path):
- for error in self.errors:
- error.prepend(path)
- class RequiredFieldInvalid(Invalid):
- """Required field was missing."""
- class ObjectInvalid(Invalid):
- """The value we found was not an object."""
- class DictInvalid(Invalid):
- """The value found was not a dict."""
- class ExclusiveInvalid(Invalid):
- """More than one value found in exclusion group."""
- class InclusiveInvalid(Invalid):
- """Not all values found in inclusion group."""
- class SequenceTypeInvalid(Invalid):
- """The type found is not a sequence type."""
- class TypeInvalid(Invalid):
- """The value was not of required type."""
- class ValueInvalid(Invalid):
- """The value was found invalid by evaluation function."""
- class ContainsInvalid(Invalid):
- """List does not contain item"""
- class ScalarInvalid(Invalid):
- """Scalars did not match."""
- class CoerceInvalid(Invalid):
- """Impossible to coerce value to type."""
- class AnyInvalid(Invalid):
- """The value did not pass any validator."""
- class AllInvalid(Invalid):
- """The value did not pass all validators."""
- class MatchInvalid(Invalid):
- """The value does not match the given regular expression."""
- class RangeInvalid(Invalid):
- """The value is not in given range."""
- class TrueInvalid(Invalid):
- """The value is not True."""
- class FalseInvalid(Invalid):
- """The value is not False."""
- class BooleanInvalid(Invalid):
- """The value is not a boolean."""
- class UrlInvalid(Invalid):
- """The value is not a url."""
- class EmailInvalid(Invalid):
- """The value is not a email."""
- class FileInvalid(Invalid):
- """The value is not a file."""
- class DirInvalid(Invalid):
- """The value is not a directory."""
- class PathInvalid(Invalid):
- """The value is not a path."""
- class LiteralInvalid(Invalid):
- """The literal values do not match."""
- class LengthInvalid(Invalid):
- pass
- class DatetimeInvalid(Invalid):
- """The value is not a formatted datetime string."""
- class DateInvalid(Invalid):
- """The value is not a formatted date string."""
- class InInvalid(Invalid):
- pass
- class NotInInvalid(Invalid):
- pass
- class ExactSequenceInvalid(Invalid):
- pass
|