Skip to content

Instantly share code, notes, and snippets.

@jwhitlock
Last active August 29, 2015 14:23
Show Gist options
  • Select an option

  • Save jwhitlock/657cddc8de86efee843b to your computer and use it in GitHub Desktop.

Select an option

Save jwhitlock/657cddc8de86efee843b to your computer and use it in GitHub Desktop.
Calculate differences between two browsercompat issues counts, and format as MarkDown
#!/usr/bin/env python
from __future__ import print_function
import csv
import sys
if len(sys.argv) != 3:
print("Usage: {} older_count.csv newer_count.csv".format(sys.argv[0]))
sys.exit(0)
def get_data(filename):
data = []
with open(filename, 'rb') as older_file:
reader = csv.reader(older_file)
first = True
for count, slug in reader:
if first:
first = False
else:
data.append((int(count), slug))
return data
older = get_data(sys.argv[1])
newer = get_data(sys.argv[2])
by_count = [slug for count, slug in sorted(older, reverse=True)]
older_by_slug = dict((slug, count) for count, slug in older)
newer_by_slug = dict((slug, count) for count, slug in newer)
ordered = []
slug_out = set()
for slug in by_count:
old_value = older_by_slug[slug]
new_value = newer_by_slug.get(slug, 0)
ordered.append((slug, old_value, new_value))
slug_out.add(slug)
for slug, new_value in newer_by_slug.items():
if slug not in slug_out:
old_value = 0
ordered.append((slug, old_value, new_value))
max_len = max([len(x) for x, _, __ in ordered])
print("{0:^{1}} | Old Count | New Count".format("Issue Slug", max_len))
print("{}-|-----------|----------".format("-" * max_len))
old_total = sum(count for count in older_by_slug.values())
new_total = sum(count for count in newer_by_slug.values())
print("{0:<{1}} | {2:>9} | {3:>9}".format(
'**Total**', max_len, old_total, new_total))
for slug, oldc, newc in ordered:
print("{0:<{1}} | {2:>9} | {3:>9}".format(slug, max_len, oldc, newc))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment