import json, re
from collections import Counter, defaultdict
rows=json.load(open("building_2025plus.json"))
MM_TYPES={'AADU','DADU','DUPLEX','GARDEN COURT (ITK)','SFR W/ AADU','SMALL LOT (ITK)','SMALL LOT (ITK) W/ AADU','TOWNHOUSE','TOWNHOUSE (ITK)','TOWNHOUSE W/AADU (ITK)','TRIPLEX','TRIPLEX (ITK)'}
def is_mm(r):
    ht=r.get("Housing_Type") or ""
    if ht in MM_TYPES: return True
    if r.get("PermitSubType")=="ADU": return True
    if r.get("PermitType")=="NEW CONSTRUCTION TOWNHOME": return True
    if r.get("PermitType")=="BUILDING MULTIFAMILY RESIDENTIAL" and r.get("PermitSubType") in ("NEW CONSTRUCTION","FOUNDATION ONLY") and 2<=(r.get("NUM_NEW_UNITS") or 0)<=6: return True
    return False
mm=[r for r in rows if is_mm(r)]
print("middle housing permits:",len(mm))
print("by Housing_Type:",Counter(r["Housing_Type"] for r in mm).most_common())
print("by STATUS:",Counter(r["STATUS"] for r in mm).most_common())
print("PARENT_PROJECT_NO populated:",sum(1 for r in mm if r.get("PARENT_PROJECT_NO")), "PARENT_PERMIT_NO populated:",sum(1 for r in mm if r.get("PARENT_PERMIT_NO")))
print("by Neighborhood:",Counter(r["Neighborhood"] for r in mm).most_common())
# multifamily new construction with units
print("\nMULTIFAMILY NEW CONSTRUCTION units:",sorted(Counter(r["NUM_NEW_UNITS"] for r in rows if r["PermitType"]=="BUILDING MULTIFAMILY RESIDENTIAL" and r["PermitSubType"]=="NEW CONSTRUCTION").items()))
# sample of description/scope for the ITK ones
for r in mm[:12]:
    print(r["PERMIT_NO"],r["APPLIED"],r["STATUS"],r["Housing_Type"],r["PermitType"],"|",r["SITE_ADDR"],"|",r["NUM_NEW_UNITS"],"|",(r["DESCRIPTION"] or "")[:90],"|",r["PARENT_PROJECT_NO"],r["PARENT_PERMIT_NO"],"|",r["APPLICANT_NAME"])
json.dump(mm,open("mm_permits.json","w"))
