from typing import Any def sprite_gallery_families(sprite_library: dict[str, dict[str, Any]]) -> list[tuple[str, dict[str, Any]]]: """Un tile par FAMILLE pour la galerie d'ajout/de changement de personnage — les personnages Kenney (pas de clé "family", voir game_engine/labels/sprite_library.py) sont chacun leur propre famille ; les animaux CraftPix (game_engine/labels/animal_sprite_library.py) sont représentés par leur variante "de base" (dict Python : ordre d'insertion garanti, "01" toujours vu en premier — voir _build_library()). Les autres variantes se choisissent depuis le panneau de propriétés (voir render_variant_gallery, templates/ screen_edit.html) plutôt que d'encombrer cette galerie de 15 tiles quasi identiques par animal.""" seen_families: set[str] = set() families: list[tuple[str, dict[str, Any]]] = [] for slug, character in sprite_library.items(): family = character.get("family") if family: if family in seen_families: continue seen_families.add(family) families.append((slug, character)) return families