<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _print_trainings_long(trainings: Iterable[Tuple[str, dict, TrainingTrace]]) -> None: """ Print a plain table with the details of the given trainings. :param trainings: iterable of tuples (train_dir, configuration dict, trace) """

    long_table = []
    for train_dir, config, trace in trainings:
        start_datetime, end_datetime = trace[TrainingTraceKeys.TRAIN_BEGIN], trace[TrainingTraceKeys.TRAIN_END]
        if start_datetime:
            age = format_timedelta(datetime.now() - start_datetime) + ' ago'
            if end_datetime:
                duration = format_timedelta(end_datetime - start_datetime)
            else:
                duration = CXF_NA_STR
        else:
            age = CXF_NA_STR
            duration = CXF_NA_STR

        epochs_done = trace[TrainingTraceKeys.EPOCHS_DONE] if trace[TrainingTraceKeys.EPOCHS_DONE] else 0

        long_table.append([path.basename(train_dir)] +
                          list(map(lambda fq_name: fq_name.split('.')[-1], get_classes(config))) +
                          [age, duration, epochs_done])

    print(tabulate(long_table, tablefmt='plain'))