def verify_new_attending(in_dict):
    """
    This function verifies the input information for post_new_attending()

    This function receives the dictionary containing the input
    from the function post_new_attending(). The function uses a for
    loop to check if the key strings are the same as the expected
    key strings and that the value types are the same as
    the expected value types. If the keys are incorrect, then a
    string notifying the client that a key is missing is returned.
    If a value type is incorrect, then a string is returned
    to the patient saying that a specific value is of the wrong type.
    If nothing is wrong, then this function returns True.
    :param in_dict: a dictionary sent from the client
    :return: True if the dictionary has the correct keys and value
    types and a string explaining why the dictionary is wrong
    otherwise.
    """
    expected_keys = ("attending_username", "attending_email",
                     "attending_phone")
    expected_values = (str, str, str)
    for key, ty in zip(expected_keys, expected_values):
        if key not in in_dict.keys():
            return "{} key not found in input".format(key)
        if type(in_dict[key]) != ty:
            return "{} value is not the correct type".format(key)
    return True