def loadInteger(name, value, min=None, max=None): try: value = int(value) except: raise validationError( 'Validation expected {0} to be an integer, found {1}.'.format( name, value)) if min is None or min <= value: if max is None or max >= value: return value raise validationError( 'Validation expected {0} to be a number between {1} and {2}, found {3}.' .format(name, min or 'negative infinity', max or 'infinity', value))
def loadArray(name, value, length=None): if isinstance(value, list): if length is None or len(value) == length: return value raise validationError( 'Validation expected {0} to be an array, found {1}.'.format( name, value))
def loadString(name, value, allowEmpty=False): if allowEmpty and value is None: return '' if isinstance(value, BASE_STRING): if allowEmpty or len(value) > 0: return value raise validationError( 'Validation expected {0} to be a string, found {1}.'.format( name, value))
def loadCoordinates(name, value, length=None, min=None, max=None): if isinstance(value, list) or isinstance(value, tuple): if length is None or len(value) == length: return tuple( loadInteger('{name}[{coord}]'.format(name=name, coord=i), value[i], min=min, max=max) for i in range(len(value))) raise validationError( 'Validation expected {0} to be an array of coordinates, found {1}.'. format(name, value))
def loadObject(name, value): if isinstance(value, dict): return value raise validationError( 'Validation expected {0} to be an object, found {1}.'.format( name, value))