import csv import re from collections import defaultdict with open("bugs-2020-01-30.csv", "r") as f: db = list(csv.DictReader(f)) summary = { "urgent": 0, "high": 0, "medium": 0, "low": 0, } prodsummary = {} prods = {} for bug in db: prod = bug["Product"] ver = bug["Version"] sev = bug["Severity"] comp = bug["Component"] mingw = comp.startswith("mingw") #if not mingw: # continue # Why are these still open. lets ignore them ? if prod == "Fedora" and ver in ["25", "26", "27"]: continue if prod not in prods: prods[prod] = {} prodsummary[prod] = { "urgent": 0, "high": 0, "medium": 0, "low": 0, } if ver not in prods[prod]: prods[prod][ver] = { "urgent": 0, "high": 0, "medium": 0, "low": 0, } prods[prod][ver][sev] = prods[prod][ver][sev] + 1 prodsummary[prod][sev] = prodsummary[prod][sev] + 1 summary[sev] = summary[sev] + 1 print("== Totals ==") print(" Critical: %d" % summary["urgent"]) print(" Important: %d" % summary["high"]) print(" Moderate: %d" % summary["medium"]) print(" Low: %d" % summary["low"]) print("\n\n\n") for prod in prods: for ver in prods[prod].keys(): print("%s %s:" % (prod, ver)) print(" Critical: %d" % prods[prod][ver]["urgent"]) print(" Important: %d" % prods[prod][ver]["high"]) print(" Moderate: %d" % prods[prod][ver]["medium"]) print(" Low: %d" % prods[prod][ver]["low"]) print("\n") print("== Totals %s: ==" % prod) print(" Critical: %d" % prodsummary[prod]["urgent"]) print(" Important: %d" % prodsummary[prod]["high"]) print(" Moderate: %d" % prodsummary[prod]["medium"]) print(" Low: %d" % prodsummary[prod]["low"]) print("\n\n\n")