"""Calcule la réutilisation des têtes de minifigs dans le catalogue LEGO.""" from pathlib import Path from lib.rebrickable.head_reuse import aggregate_head_reuse, build_head_presence, load_minifigs_by_set, write_head_reuse from lib.rebrickable.minifigs_by_set import load_parts_catalog, select_head_parts MINIFIGS_BY_SET_PATH = Path("data/intermediate/minifigs_by_set.csv") PARTS_CATALOG_PATH = Path("data/raw/parts.csv") INVENTORIES_PATH = Path("data/raw/inventories.csv") INVENTORY_PARTS_PATH = Path("data/raw/inventory_parts.csv") DESTINATION_PATH = Path("data/intermediate/head_reuse.csv") def main() -> None: """Construit le CSV des têtes filtrées avec leurs usages dans le catalogue complet.""" minifigs = load_minifigs_by_set(MINIFIGS_BY_SET_PATH) parts_catalog = load_parts_catalog(PARTS_CATALOG_PATH) head_parts = select_head_parts(parts_catalog) presence = build_head_presence(INVENTORIES_PATH, INVENTORY_PARTS_PATH, head_parts) reuse = aggregate_head_reuse(minifigs, parts_catalog, presence) write_head_reuse(DESTINATION_PATH, reuse) if __name__ == "__main__": main()