"""Calcule les pièces rares en comparant les sets filtrés au reste du catalogue.""" from pathlib import Path from lib.rebrickable.part_rarity import build_part_rarity, select_until_reused, write_part_rarity PARTS_FILTERED_PATH = Path("data/intermediate/parts_filtered.csv") INVENTORIES_PATH = Path("data/raw/inventories.csv") INVENTORY_PARTS_PATH = Path("data/raw/inventory_parts.csv") PARTS_CATALOG_PATH = Path("data/raw/parts.csv") PART_CATEGORIES_PATH = Path("data/raw/part_categories.csv") FILTERED_SETS_PATH = Path("data/intermediate/sets_enriched.csv") DESTINATION_PATH = Path("data/intermediate/part_rarity.csv") TOP_DESTINATION_PATH = Path("data/intermediate/part_rarity_exclusive.csv") def main() -> None: """Construit les CSV complets et top 10 des pièces les plus rares.""" rows = build_part_rarity( PARTS_FILTERED_PATH, INVENTORIES_PATH, INVENTORY_PARTS_PATH, PARTS_CATALOG_PATH, PART_CATEGORIES_PATH, FILTERED_SETS_PATH, ) write_part_rarity(DESTINATION_PATH, rows) top_rows = select_until_reused(rows) write_part_rarity(TOP_DESTINATION_PATH, top_rows) if __name__ == "__main__": main()