"""Recálculo público con la biblioteca estándar: python recalcular.py --datos ."""
import argparse
import csv
from pathlib import Path
p=argparse.ArgumentParser();p.add_argument('--datos',type=Path,default=Path(__file__).resolve().parent);a=p.parse_args()
annual=list(csv.DictReader((a.datos/'serie-anual.csv').open()))
comps=list(csv.DictReader((a.datos/'descomposicion.csv').open()))
print('año,edición,brecha_pp,codelco_pp,participación_codelco_porcentaje,participación_cobre_porcentaje')
for r in annual:
 rows=[d for d in comps if d['anio']==r['anio'] and d['edicion']==r['edicion']]
 assert len(rows)==4
 gap=float(r['balance_efectivo'])-float(r['balance_estructural'])
 assert abs(sum(float(d['valor']) for d in rows)-gap)<0.000002
 codelco=next(float(d['valor']) for d in rows if d['componente']=='codelco')
 copper=codelco+next(float(d['valor']) for d in rows if d['componente']=='gmp10')
 print(','.join([r['anio'],r['edicion'],f'{gap:.9f}',f'{codelco:.9f}',f'{100*codelco/gap:.6f}',f'{100*copper/gap:.6f}']))
