import json,sys,collections,hashlib from pathlib import Path p=Path(sys.argv[1] if len(sys.argv)>1 else "austin-mechanical-permits-2026-10-05.json") raw=p.read_bytes();d=json.loads(raw);rows=d["rows"];keys=[r["permit_number"] for r in rows] result={"input_sha256":hashlib.sha256(raw).hexdigest(),"retrieved_at":d["retrievedAt"],"rows":len(rows),"distinct_permits":len(set(keys)),"duplicate_permits":sorted(k for k,n in collections.Counter(keys).items() if n>1),"distinct_contractor_strings":len({r.get("contractor_company_name","") for r in rows if r.get("contractor_company_name","").strip()}),"blank_contractor_rows":sum(not r.get("contractor_company_name","").strip() for r in rows),"statuses":dict(sorted(collections.Counter(r["status_current"] for r in rows).items())),"out_of_scope_rows":sum(not ("2026-10-05"<=r["issue_date"][:10]<"2026-10-12" and r["jurisdiction"]=="AUSTIN FULL PURPOSE" and r["permit_type_desc"]=="Mechanical Permit" and r["work_class"]=="Change Out") for r in rows)} print(json.dumps(result,indent=2,sort_keys=True))