def check_valid(input_password):
    """
    Checks to see if the input password is valid for this training program

    Invalid in this case means you don't want to train on them

    Additionaly grammar checks may be run later to futher exclude passwords#
    This just features that will likely be universal rejections

    Returns
        TRUE if the password is valid
        FALSE if invalid

    """

    # Don't accept blank passwords for training.
    if len(input_password) == 0:
        return False

    # Remove tabs from the training data
    # This is important since when the grammar is saved to disk tabs are used
    # as seperators. There certainly are other approaches but putting this
    # placeholder here for now since tabs are unlikely to be used in passwords
    if "\t" in input_password:
        return False

    # Below are other values that cause problems that we are going to remove.
    # These values include things like LineFeed LF

    #Invalid characters at the begining of the ASCII table
    for invalid_hex in range (0x0,0x20):
        if chr(invalid_hex) in input_password:
            return False

    # UTF-8 Line Seperator
    if u"\u2028" in input_password:
        return False

    return True