File size: 969 Bytes
146e93e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
def compute_transparency_scorecard(results):
    agencies = {}

    for r in results:
        a = r["source"]
        agencies.setdefault(a, {
            "documents": 0,
            "exemptions": 0,
            "latest_date": None,
        })

        agencies[a]["documents"] += 1
        agencies[a]["exemptions"] += len(r.get("exemptions", []))

        if r.get("date"):
            agencies[a]["latest_date"] = max(
                agencies[a]["latest_date"] or r["date"],
                r["date"],
            )

    scorecard = []
    for agency, m in agencies.items():
        scorecard.append({
            "agency": agency,
            "doc_count": m["documents"],
            "exemptions_per_doc": round(m["exemptions"] / max(m["documents"], 1), 2),
            "last_release": m["latest_date"],
            "transparency_score": min(
                100,
                m["documents"] * 2 - m["exemptions"]
            ),
        })

    return scorecard