"""Agrupa un CSV del laboratorio BeautyThings y suma o cuenta sus columnas.

Uso: python resumen.py archivo.csv columna [columna ...]
- Si el CSV tiene «superados» y «total», suma ambos por grupo.
- Si no, cuenta las filas y los «sí» de cada columna sí/no.
"""
import csv
import sys
from collections import defaultdict

archivo, claves = sys.argv[1], sys.argv[2:]
with open(archivo, encoding='utf-8') as f:
    filas = list(csv.DictReader(f))
grupos = defaultdict(list)
for fila in filas:
    grupos[tuple(fila[c] for c in claves)].append(fila)
binarias = [c for c in filas[0] if c not in claves and all(f[c] in ('sí', 'no') for f in filas)]
for grupo, fs in grupos.items():
    nombre = ' · '.join(grupo)
    if 'superados' in fs[0] and 'total' in fs[0]:
        print(f"{nombre}: {sum(int(f['superados']) for f in fs)}/{sum(int(f['total']) for f in fs)} ({len(fs)} ejecuciones)")
    else:
        sis = ', '.join(f"{c}={sum(f[c] == 'sí' for f in fs)}" for c in binarias)
        print(f"{nombre}: {len(fs)} filas · {sis}")
