IS_NOT_NULL = 'is_not_null'
IS_NOT_BOOL = 'is_not_bool'
IS_NOT_CONVERTIBLE_TO_BOOL = 'is_not_convertible_to_bool'

NOTHING_MATCH = 'nothing_match'

# String
IS_NOT_A_STRING = 'is_not_a_string'
IS_NOT_A_BYTES_STRING = 'is_not_a_bytes_string'
EMPTY_STRING = 'empty_string'
SHORT_STRING = 'short_string'
LONG_STRING = 'long_string'
# Regexp
DOES_NOT_MATCH_RE = 'does_not_match_re'

WRONG_TYPE = 'wrong_type'
IS_NOT_A_NUMBER = 'is_not_a_number'
DOES_NOT_MATCH_ANY = 'does_not_match_any'

TOO_BIG = 'too_big'
TOO_SMALL = 'too_small'

IS_NOT_INT = 'is_not_int'
INVALID_DECIMAL = 'invalid_decimal'

IS_NOT_EXACTLY = 'is_not_exactly'
TRAFARET_IS_NOT_SET = 'trafaret_is_not_set'
IS_NOT_CALLABLE = 'is_not_callable'

IS_NOT_BYTES = 'is_not_bytes'
CANNOT_BE_DECODED = 'cannot_be_decoded'
CANNOT_BE_ENCODED = 'cannot_be_encoded'

IS_NOT_A_LIST = 'is_not_a_list'
TOO_SHORT = 'too_short'
TOO_LONG = 'too_long'

TUPLE_LIKE = 'tuple_like'
LOT_ELEMENTS = 'lot_elements'

PAIR_MEMBERS_DID_NOT_MATCH = 'pair_members_did_not_match'
SOME_ELEMENTS_DID_NOT_MATCH = 'some_elements_did_not_match'

# Keys and dict
IS_NOT_A_DICT = 'is_not_a_dict'
REQUIRED = 'required'
SHADOWED = 'shadowed'
NOT_ALLOWED = 'not_allowed'
MAPPING_FAILED = 'mapping_failed'
# extra keys
MUST_BE_EQUAL = 'must_be_equal'
ONLY_ONE_MUST_BE_DEFINED = 'only_one_must_be_defined'
ONE_IS_REQUIRED = 'one_is_required'

# Internet
IS_NOT_VALID_EMAIL = 'is_not_valid_email'
IS_NOT_VALID_URL = 'is_not_valid_url'
IS_NOT_IPv4 = 'is_not_ipv4'
IS_NOT_IPv6 = 'is_not_ipv6'
IS_NOT_IP = 'is_not_ip'

# Date & DateTime
DOES_NOT_MATCH_FORMAT = 'does_not_match_format'
IS_NOT_CONVERTIBLE_TO_DATE = 'is_not_convertible_to_date'
IS_NOT_CONVERTIBLE_TO_DATETIME = 'is_not_convertible_to_datetime'


# Contrib
NOT_DATETIME = 'not_datetime'
NOT_DATE = 'not_date'
