1

Ajoute le genre des personnages et colore les graphiques

This commit is contained in:
2025-12-02 11:37:13 +01:00
parent 230b9db239
commit f5c1fa6333
12 changed files with 300 additions and 43 deletions

View File

@@ -15,18 +15,54 @@ def test_aggregate_by_character_counts_unique_figs() -> None:
"""Compter les minifigs distinctes par personnage en excluant les noms vides."""
aggregates = aggregate_by_character(
[
{"set_num": "123-1", "part_num": "head-a", "known_character": "Owen Grady", "fig_num": "fig-owen-1"},
{"set_num": "124-1", "part_num": "head-b", "known_character": "Owen Grady", "fig_num": "fig-owen-1"},
{"set_num": "125-1", "part_num": "head-c", "known_character": "Owen Grady", "fig_num": "fig-owen-2"},
{"set_num": "126-1", "part_num": "head-d", "known_character": "Figurant", "fig_num": "fig-guard-1"},
{"set_num": "128-1", "part_num": "head-f", "known_character": "Figurant", "fig_num": "fig-guard-1"},
{"set_num": "129-1", "part_num": "head-g", "known_character": "", "fig_num": "fig-guard-2"},
{
"set_num": "123-1",
"part_num": "head-a",
"known_character": "Owen Grady",
"fig_num": "fig-owen-1",
"gender": "male",
},
{
"set_num": "124-1",
"part_num": "head-b",
"known_character": "Owen Grady",
"fig_num": "fig-owen-1",
"gender": "male",
},
{
"set_num": "125-1",
"part_num": "head-c",
"known_character": "Owen Grady",
"fig_num": "fig-owen-2",
"gender": "male",
},
{
"set_num": "126-1",
"part_num": "head-d",
"known_character": "Figurant",
"fig_num": "fig-guard-1",
"gender": "unknown",
},
{
"set_num": "128-1",
"part_num": "head-f",
"known_character": "Figurant",
"fig_num": "fig-guard-1",
"gender": "unknown",
},
{
"set_num": "129-1",
"part_num": "head-g",
"known_character": "",
"fig_num": "fig-guard-2",
"gender": "unknown",
},
]
)
assert aggregates == [
{"known_character": "Owen Grady", "minifig_count": 2},
{"known_character": "Figurant", "minifig_count": 1},
{"known_character": "Owen Grady", "gender": "male", "minifig_count": 2},
{"known_character": "Figurant", "gender": "unknown", "minifig_count": 1},
]
@@ -34,13 +70,13 @@ def test_write_character_counts_outputs_csv(tmp_path: Path) -> None:
"""Écrit le CSV des comptes par personnage."""
destination = tmp_path / "counts.csv"
rows = [
{"known_character": "A", "minifig_count": 2},
{"known_character": "B", "minifig_count": 1},
{"known_character": "A", "gender": "male", "minifig_count": 2},
{"known_character": "B", "gender": "female", "minifig_count": 1},
]
write_character_counts(destination, rows)
assert destination.read_text() == "known_character,minifig_count\nA,2\nB,1\n"
assert destination.read_text() == "known_character,gender,minifig_count\nA,male,2\nB,female,1\n"
def test_aggregate_presence_by_year_excludes_figurants(tmp_path: Path) -> None:
@@ -52,8 +88,20 @@ def test_aggregate_presence_by_year_excludes_figurants(tmp_path: Path) -> None:
"124-1,2021\n"
)
minifigs_rows = [
{"set_num": "123-1", "known_character": "Owen Grady", "fig_num": "fig-owen", "part_num": "head-a"},
{"set_num": "124-1", "known_character": "Figurant", "fig_num": "fig-guard", "part_num": "head-b"},
{
"set_num": "123-1",
"known_character": "Owen Grady",
"fig_num": "fig-owen",
"part_num": "head-a",
"gender": "male",
},
{
"set_num": "124-1",
"known_character": "Figurant",
"fig_num": "fig-guard",
"part_num": "head-b",
"gender": "unknown",
},
]
sets_years = load_sets_enriched(sets_path)
@@ -76,13 +124,31 @@ def test_aggregate_character_spans_excludes_figurants(tmp_path: Path) -> None:
)
sets_years = load_sets_enriched(sets_path)
minifigs_rows = [
{"set_num": "123-1", "known_character": "Owen Grady", "fig_num": "fig-owen", "part_num": "head-a"},
{"set_num": "124-1", "known_character": "Owen Grady", "fig_num": "fig-owen", "part_num": "head-a"},
{"set_num": "125-1", "known_character": "Figurant", "fig_num": "fig-guard", "part_num": "head-b"},
{
"set_num": "123-1",
"known_character": "Owen Grady",
"fig_num": "fig-owen",
"part_num": "head-a",
"gender": "male",
},
{
"set_num": "124-1",
"known_character": "Owen Grady",
"fig_num": "fig-owen",
"part_num": "head-a",
"gender": "male",
},
{
"set_num": "125-1",
"known_character": "Figurant",
"fig_num": "fig-guard",
"part_num": "head-b",
"gender": "unknown",
},
]
spans = aggregate_character_spans(minifigs_rows, sets_years, excluded_characters=["Figurant"])
assert spans == [
{"known_character": "Owen Grady", "start_year": "2020", "end_year": "2021", "total_minifigs": "2"},
{"known_character": "Owen Grady", "start_year": "2020", "end_year": "2021", "total_minifigs": "2", "gender": "male"},
]