예제 #1
0
def format_families(families, colorize=True, verbose=True):
    if not families:
        s = "No algorithm families found."
        return s
    else:

        table = []
        table.append([
            'Family name',
            'interface',
            'pattern',
            '# found',
            'valid',
            'filename',
            'description',
        ])
        for family in families:
            assert isinstance(family, EasyAlgoFamily)
            row = []
            row.append(family.family_name)
            row.append(family.interface)
            row.append(family.instances_pattern)
            if not family.instances:
                row.append('\n(none)')
            else:
                n_valid = len(
                    [_ for _ in family.instances.values() if _.valid])
                n_invalid = len(family.instances) - n_valid
                ss = '%s' % len(family.instances)
                if n_invalid:
                    ss += dtu.make_red(' (%d invalid)' % n_invalid)
                row.append(ss)

            if family.valid:
                ss = 'yes'
            else:
                ss = 'no: ' + family.error_if_invalid
            row.append(ss)
            row.append(dtu.friendly_path(family.filename))

            if (not family.valid) and colorize:
                row = dtu.make_row_red(row)

            row.append(family.description.strip())
            table.append(row)

        if not verbose:
            dtu.remove_table_field(table, 'filename')

        s = "Found %d algorithm families:\n\n" % len(families)
        s += dtu.indent(dtu.format_table_plus(table, colspacing=4), '   ')

        return s
예제 #2
0
def test_table():

    table = get_test_table()
    r1 = dtu.format_table_plus(table)

    table[1] = dtu.make_row_red(table[1])
    r2 = dtu.format_table_plus(table)

    #print r1
    #print r2
    r2e = dtu.remove_escapes(r2)
    #print r2e
    assert r1 == r2e
예제 #3
0
def format_logs(logs):
    if not logs:
        s = "No logs found."
        return s
    else:
        s = "Found %d logs.\n" % len(logs)
        table = []
        table.append([
            '#', 'Log name', 'map', 'description', 'date', 'length',
            'vehicle name', 'filename', 'valid', 'topics'
        ])
        for i, (_, log) in enumerate(logs.items()):
            row = []
            row.append(i)
            row.append(log.log_name)
            row.append(log.map_name)
            row.append(log.description)
            row.append(log.date)
            if log.length is not None:
                l = '%5.1f s' % log.length
            else:
                l = '(none)'
            row.append(l)
            row.append(log.vehicle)
            if log.filename is None:
                row.append('not local')
            else:
                row.append(friendly_path(log.filename))
            if log.valid:
                s = 'Yes.'
            else:
                s = log.error_if_invalid
            row.append(s)
            if log.bag_info is not None:
                info = yaml.dump(log.bag_info['topics'])
            else:
                info = '(none)'
            if not log.valid:
                row = make_row_red(row)

            row.append(info)
            table.append(row)

        remove_table_field(table, 'filename')
        remove_table_field(table, 'topics')
        remove_table_field(table, 'description')
        remove_table_field(table, 'map')
        s += indent(format_table_plus(table, colspacing=4), '| ')
        return s
예제 #4
0
def get_logs_description_table(logs, color=True):
    table = []
    table.append([
        '#', 'Log name', 'rc', 'description', 'bag size', 'hash bag', 'date',
        'length', 'vehicle name', 'filename', 'valid', 'topics'
    ])
    for i, (_, log) in enumerate(logs.items()):
        row = []
        row.append(i)
        row.append(log.log_name)
        row.append(len(log.resources))
        #        row.append(log.map_name)
        row.append(log.description)
        dtr = DTR.from_yaml(log.resources['bag'])
        bag_size_mb = '%8.1f MB' % (dtr.size / (1024.0 * 1024))
        row.append(bag_size_mb)
        row.append('%s %s \n%s' % (dtr.name, bag_size_mb, dtr.hash['sha1']))
        row.append(log.date)
        if log.length is not None:
            l = '%5.1f s' % log.length
        else:
            l = '(none)'
        row.append(l)
        row.append(log.vehicle)

        try:
            filename = get_local_bag_file(log)
            row.append(dtu.friendly_path(filename))
        except NotAvailableLocally:
            row.append('not local')

        if log.valid:
            sr = 'Yes.'
        else:
            sr = log.error_if_invalid
        row.append(sr)
        if log.bag_info is not None:
            info = yaml.dump(log.bag_info['topics'])
        else:
            info = '(none)'
        if color and not log.valid:
            row = dtu.make_row_red(row)

        row.append(info)
        table.append(row)
    return table