From 8560f15b415d44ddf71347236985851a2b2782b4 Mon Sep 17 00:00:00 2001 From: Richard Dern Date: Wed, 3 Dec 2025 17:21:00 +0100 Subject: [PATCH] =?UTF-8?q?Exclusion=20des=20pi=C3=A8ces=20imprim=C3=A9es?= =?UTF-8?q?=20dans=20la=20recherche=20de=20raret=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- figures/step34/part_rarity_no_print.png | Bin 0 -> 72168 bytes lib/rebrickable/part_rarity.py | 10 +++++++++- scripts/compute_part_rarity.py | 15 +++++++++++++++ scripts/plot_part_rarity.py | 3 +++ tests/test_part_rarity.py | 13 +++++++++++++ 5 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 figures/step34/part_rarity_no_print.png diff --git a/figures/step34/part_rarity_no_print.png b/figures/step34/part_rarity_no_print.png new file mode 100644 index 0000000000000000000000000000000000000000..33164fd813cc14db112e09466b2890884ef1a917 GIT binary patch literal 72168 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 Dict[str, dict]: """Agrège les quantités par pièce pour les sets filtrés (rechanges incluses).""" aggregated: Dict[str, dict] = {} @@ -57,6 +58,8 @@ def aggregate_filtered_parts( continue if part["part_cat_id"] in ignored_minifig_categories: continue + if exclude_printed and "print" in part["name"].lower(): + continue entry = aggregated.get(row["part_num"]) if entry is None: entry = {"quantity": 0, "set_numbers": set()} @@ -73,6 +76,7 @@ def compute_other_set_usage( filtered_set_numbers: Set[str], ignored_categories: Set[str] = IGNORED_PART_CATEGORY_IDS, ignored_minifig_categories: Set[str] = MINIFIG_PART_CATEGORY_IDS, + exclude_printed: bool = False, ) -> Dict[str, int]: """Compte les occurrences des pièces dans le reste du catalogue (rechanges incluses).""" inventories = select_latest_inventories(inventories_path) @@ -87,6 +91,8 @@ def compute_other_set_usage( continue if part["part_cat_id"] in ignored_minifig_categories: continue + if exclude_printed and "print" in part["name"].lower(): + continue totals[row["part_num"]] = totals.get(row["part_num"], 0) + int(row["quantity"]) return totals @@ -98,6 +104,7 @@ def build_part_rarity( parts_catalog_path: Path, part_categories_path: Path, filtered_sets_path: Path, + exclude_printed: bool = False, ) -> List[dict]: """Construit le classement de rareté des pièces filtrées.""" parts_catalog = load_parts_catalog(parts_catalog_path) @@ -105,12 +112,13 @@ def build_part_rarity( filtered_sets = load_filtered_sets(filtered_sets_path) filtered_set_numbers = set(filtered_sets.keys()) filtered_rows = read_rows(parts_filtered_path) - filtered_usage = aggregate_filtered_parts(filtered_rows, parts_catalog) + filtered_usage = aggregate_filtered_parts(filtered_rows, parts_catalog, exclude_printed=exclude_printed) other_usage = compute_other_set_usage( inventories_path, inventory_parts_path, parts_catalog, filtered_set_numbers, + exclude_printed=exclude_printed, ) rows: List[dict] = [] for part_num, entry in filtered_usage.items(): diff --git a/scripts/compute_part_rarity.py b/scripts/compute_part_rarity.py index 911f849..bcf72f1 100644 --- a/scripts/compute_part_rarity.py +++ b/scripts/compute_part_rarity.py @@ -12,7 +12,9 @@ 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") +DESTINATION_PRINTED_EXCLUDED_PATH = Path("data/intermediate/part_rarity_no_print.csv") TOP_DESTINATION_PATH = Path("data/intermediate/part_rarity_exclusive.csv") +TOP_PRINTED_EXCLUDED_PATH = Path("data/intermediate/part_rarity_exclusive_no_print.csv") def main() -> None: @@ -29,6 +31,19 @@ def main() -> None: top_rows = select_until_reused(rows) write_part_rarity(TOP_DESTINATION_PATH, top_rows) + rows_no_print = build_part_rarity( + PARTS_FILTERED_PATH, + INVENTORIES_PATH, + INVENTORY_PARTS_PATH, + PARTS_CATALOG_PATH, + PART_CATEGORIES_PATH, + FILTERED_SETS_PATH, + exclude_printed=True, + ) + write_part_rarity(DESTINATION_PRINTED_EXCLUDED_PATH, rows_no_print) + top_rows_no_print = select_until_reused(rows_no_print) + write_part_rarity(TOP_PRINTED_EXCLUDED_PATH, top_rows_no_print) + if __name__ == "__main__": main() diff --git a/scripts/plot_part_rarity.py b/scripts/plot_part_rarity.py index fb487ba..e5d4a01 100644 --- a/scripts/plot_part_rarity.py +++ b/scripts/plot_part_rarity.py @@ -8,11 +8,14 @@ from lib.plots.part_rarity import plot_part_rarity PART_RARITY_TOP_PATH = Path("data/intermediate/part_rarity_exclusive.csv") DESTINATION_PATH = Path("figures/step34/part_rarity.png") RESOURCES_DIR = Path("figures/rebrickable") +PART_RARITY_NO_PRINT_PATH = Path("data/intermediate/part_rarity_exclusive_no_print.csv") +DESTINATION_NO_PRINT = Path("figures/step34/part_rarity_no_print.png") def main() -> None: """Charge le top des pièces rares et produit le graphique illustré.""" plot_part_rarity(PART_RARITY_TOP_PATH, DESTINATION_PATH, resources_dir=RESOURCES_DIR) + plot_part_rarity(PART_RARITY_NO_PRINT_PATH, DESTINATION_NO_PRINT, resources_dir=RESOURCES_DIR) if __name__ == "__main__": diff --git a/tests/test_part_rarity.py b/tests/test_part_rarity.py index 6dc8802..976c30e 100644 --- a/tests/test_part_rarity.py +++ b/tests/test_part_rarity.py @@ -58,6 +58,7 @@ def test_build_part_rarity_counts_spares_and_ignores_categories(tmp_path: Path) ["p4", "Figure Limb", "41", "Plastic"], ["p5", "Sticker Sheet", "58", "Plastic"], ["p6", "Exclusive Tile", "1", "Plastic"], + ["p7", "Slope 45 print", "1", "Plastic"], ], ) part_categories = tmp_path / "part_categories.csv" @@ -95,6 +96,7 @@ def test_build_part_rarity_counts_spares_and_ignores_categories(tmp_path: Path) ["3", "p4", "1", "4", "True", ""], ["4", "p1", "1", "8", "False", ""], ["5", "p5", "1", "9", "False", ""], + ["5", "p7", "1", "5", "False", ""], ], ) @@ -150,6 +152,17 @@ def test_build_part_rarity_counts_spares_and_ignores_categories(tmp_path: Path) ] assert select_until_reused(rows) == [rows[0], rows[1]] + rows_no_print = build_part_rarity( + parts_filtered, + inventories, + inventory_parts, + parts_catalog, + part_categories, + sets_enriched, + exclude_printed=True, + ) + assert all(r["part_num"] != "p7" for r in rows_no_print) + def test_write_part_rarity_outputs_csv(tmp_path: Path) -> None: """Sérialise le classement de rareté."""