Source code for pydst.validators
import cerberus
[docs]def lang_validator(lang, valid_langs):
"""Validates if language is correctly specified.
This function validates that lang is contained in valid_langs,
and that lang and valid_langs takes the correct types.
Args:
lang (str): Language that is contained in valid_langs.
Language must be letters.
valid_langs(list of str): A list of valid languages. Each
element must be letters.
Returns:
None
"""
v = cerberus.Validator()
schema = {
'lang': {
'type': 'string',
'regex': r'[a-zA-Z]+',
},
'valid_langs': {
'type': 'list',
'schema': {
'type': 'string',
'regex': r'[a-zA-Z]+',
}
}
}
validation_object = {
'lang': lang,
'valid_langs': valid_langs,
}
v.validate(validation_object, schema)
validation_error_raise(v)
if not str_in_list(lang, valid_langs):
raise ValueError('{} is not in {}'.format(lang, valid_langs))
[docs]def str_in_list(str, list):
"""Check if a string is contained in a list
Args:
str (str): Arbitrary string
list (list of str): Arbitrary list of strings
Returns:
bool: Returns True (False) if (not) str contained in list
"""
if str in list:
return True
else:
return False
[docs]def dict_keys_to_comma_str(dict):
""" Comma seperates dict keys into string
Args:
dict (dict): A dictionary.
Returns:
str: Comma seperated string of keys.
"""
return ', '.join([str(i) for i in dict.keys()])
[docs]def validation_error_raise(validationObject):
if any(validationObject.errors):
raise ValueError(
'The following arguments is not provided correctly: {}. '\
'See the docs.'.format(dict_keys_to_comma_str(validationObject.errors))
)
[docs]def subject_validator(subjects):
v = cerberus.Validator()
schema = {
'subjects': {
'anyof': [{
'type': 'string',
'regex': r'[0-9]+',
},
{
'type': 'list',
'schema': {
'type': 'string',
'regex': r'[0-9]+',
}
}
]
}
}
validation_object = {
'subjects': subjects
}
v.validate(validation_object, schema)
validation_error_raise(v)