Creates a validator that checks if the given value's length is in the
    specified range, inclusive. (Returns the original value.)

    See :func:`.Range`.

def Length(min=None, max=None, min_message="Must have a length of at least {min}", max_message="Must have a length of at most {max}"):
    """
    Creates a validator that checks if the given value's length is in the
    specified range, inclusive. (Returns the original value.)

    See :func:`.Range`.
    """
    validator = Range(min, max, min_message, max_message)
    @wraps(Length)
    def built(value):
        if not hasattr(value, '__len__'):
            raise Error("Does not have a length")
        validator(len(value))
        return value
    return built