"""Combine explicitly supplied tables and metadata; never fills missing cells.
python3 scripts/make_bundle.py --metadata templates/metadata.json --aggregate aggregate.csv --standard standard.csv --reference reference.csv --output my_bundle.json
"""
import argparse,csv,json
from pathlib import Path
p=argparse.ArgumentParser()
for key in ['metadata','aggregate','standard','reference','output']:p.add_argument('--'+key,type=Path,required=key!='reference')
a=p.parse_args()
def read(path):return list(csv.DictReader(path.open(encoding='utf-8-sig',newline=''))) if path else []
b={'metadata':json.loads(a.metadata.read_text(encoding='utf-8-sig')),'aggregate':read(a.aggregate),'standard_population':read(a.standard),'reference_mortality':read(a.reference)}
a.output.write_text(json.dumps(b,ensure_ascii=False,indent=2)+'\n',encoding='utf-8')
print('Created bundle. Calculation will validate required fields, keys, age coverage and values.')
