def split_format_str(fstr):
    ret = []

    for lit, fname, fspec, conv in Formatter().parse(fstr):
        if fname is None:
            ret.append((lit, None))
            continue
        field_str = construct_format_field_str(fname, fspec, conv)
        ret.append((lit, field_str))
    return ret
L{Action.__exit__} logs an action finish message on an exception
dataset/ETHPy150Open mahmoud/boltons/boltons/formatutils.py/split_format_str--crossover with--dataset/ETHPy150Open ClusterHQ/eliot/eliot/tests/test_action.py/ActionTests.test_withLogsExceptionMessage