def create_summary()

in benchmark.py [0:0]


def create_summary(data, project_source):
  """Creates the runs summary onto stdout.

  Excludes runs with non-zero exit codes from the final summary table.
  """
  unit = {
    'wall': 's ',
    'cpu': 's ',
    'system': 's ',
    'memory': 'MB'
  }
  summary_builder = []
  summary_builder.append('\nRESULTS:')
  last_collected = None
  for (i, bazel_commit, project_commit), collected in data.items():
    header = ('[Unit #%d] Bazel version: %s, Project commit: %s, Project source: %s' %
              (i, bazel_commit, project_commit, project_source))
    summary_builder.append(header)

    summary_builder.append(
        '%s  %s %s %s %s' %
        ('metric'.rjust(8), 'mean'.center(20), 'median'.center(20),
         'stddev'.center(10), 'pval'.center(10)))

    num_runs = len(collected['wall'].items())
    # A map from run number to exit code, for runs with non-zero exit codes.
    non_zero_runs = {}
    for i, exit_code in enumerate(collected['exit_status'].items()):
      if exit_code != 0:
        non_zero_runs[i] = exit_code
    for metric, values in collected.items():
      if metric in ['exit_status', 'started_at']:
        continue

      values_exclude_failures = values.exclude_from_indexes(
          non_zero_runs.keys())
      # Skip if there's no value available after excluding failed runs.
      if not values_exclude_failures.items():
        continue

      if last_collected:
        base = last_collected[metric]
        pval = '% 7.5f' % values_exclude_failures.pval(base.values())
        mean_diff = '(% +6.2f%%)' % (
            100. * (values_exclude_failures.mean() - base.mean()) / base.mean())
        median_diff = '(% +6.2f%%)' % (
            100. *
            (values_exclude_failures.median() - base.median()) / base.median())
      else:
        pval = ''
        mean_diff = median_diff = '         '
      summary_builder.append(
          '%s: %s %s %s %s' %
          (metric.rjust(8),
           ('% 8.3f%s %s' %
            (values_exclude_failures.mean(), unit[metric], mean_diff)).center(20),
           ('% 8.3f%s %s' %
            (values_exclude_failures.median(), unit[metric], median_diff)).center(20),
           ('% 7.3f%s' % (values_exclude_failures.stddev(), unit[metric])).center(10),
           pval.center(10)))
    last_collected = collected
    if non_zero_runs:
      summary_builder.append(
          ('The following runs contain non-zero exit code(s):\n %s\n'
           'Please check the full log for more details. These runs are '
           'excluded from the above result table.' %
           '\n '.join('- run: %s/%s, exit_code: %s' % (k + 1, num_runs, v)
                      for k, v in non_zero_runs.items())))
    summary_builder.append('')

  return '\n'.join(summary_builder)