From d996fcc0b73142bc09f4822ec5599ee40a7da186 Mon Sep 17 00:00:00 2001 From: Chris Mostert <15890652+chrismostert@users.noreply.github.com> Date: Mon, 15 Apr 2024 11:11:53 +0200 Subject: [PATCH] Simply summary sentence structure --- src/eml_types.py | 28 ++++++++++++++-------------- test/test_e2e.py | 14 +++++++------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/eml_types.py b/src/eml_types.py index f9ec856..8387941 100644 --- a/src/eml_types.py +++ b/src/eml_types.py @@ -72,7 +72,7 @@ class VoteDifferencePercentage: value: float def __str__(self) -> str: - return f"{self.value}%" + return f"{round(self.value, 1)}%" VoteDifference = Union[VoteDifferenceAmount, VoteDifferencePercentage] @@ -141,15 +141,15 @@ class CheckResult: def summarise(self, summary_type: SummaryType) -> str: def prefix(n_findings: int) -> str: if n_findings == 0: - return " " + return "Er is " elif n_findings == 1: - return " Daarnaast " + return " Daarnaast is er " else: - return " Ook " + return " Ook is er " class Sentence: def __init__(self) -> None: - self.content = ["In dit stembureau"] + self.content = [] self.n_findings = 0 def add(self, text: str) -> None: @@ -158,7 +158,7 @@ def add(self, text: str) -> None: def render(self, recounted: bool) -> str: if self.n_findings == 0: - return f"{self.content} zijn er geen bevindingen." + return "Er zijn geen bevindingen." return f"{''.join(self.content)} Er is {'wel' if recounted else 'niet'} herteld." sentence = Sentence() @@ -166,34 +166,34 @@ def render(self, recounted: bool) -> str: if summary_type == SummaryType.A: if self.inexplicable_difference: sentence.add( - f"is er een onverklaard verschil van {self.inexplicable_difference}" + f"een onverklaard verschil van {self.inexplicable_difference}" ) if self.explanation_sum_difference: sentence.add( - f"is er een verschil tussen het aantal toegelaten kiezers en de som van de gegeven verklaringen van {self.explanation_sum_difference}" + f"een aantal ontbrekende verklaringen van {self.explanation_sum_difference}" ) elif summary_type == SummaryType.B: if self.zero_votes: - sentence.add("zijn er 0 stemmen uitgebracht") + sentence.add("een aantal uitgebrachte stemmen van 0") if self.high_invalid_vote_percentage: sentence.add( - f"is er een hoog percentage ongeldige stemmen ({int(self.high_invalid_vote_percentage)}%)" + f"een hoog percentage ongeldige stemmen ({int(self.high_invalid_vote_percentage)}%)" ) if self.high_blank_vote_percentage: sentence.add( - f"is er een hoog percentage blanco stemmen ({int(self.high_blank_vote_percentage)}%)" + f"een hoog percentage blanco stemmen ({int(self.high_blank_vote_percentage)}%)" ) if self.high_vote_difference: sentence.add( - f"is er een groot verschil tussen het aantal toegelaten kiezers en het aantal uitgebrachte stemmen ({self.high_vote_difference})" + f"een groot verschil tussen het aantal toegelaten kiezers en het aantal uitgebrachte stemmen ({self.high_vote_difference})" ) if self.parties_with_high_difference_percentage: sentence.add( - f"hebben de volgende partijen een opmerkelijk grote afwijking ten opzichte van het gemeentegemiddelde: {', '.join(self.parties_with_high_difference_percentage)}" + f"een opmerkelijk grote afwijking ten opzichte van het gemeentegemiddelde bij de volgende partijen: {', '.join(self.parties_with_high_difference_percentage)}" ) if self.potentially_switched_candidates: sentence.add( - f"is er een mogelijke verwisseling bij de volgende kandidaten: {', '.join((str(switch) for switch in self.potentially_switched_candidates))}" + f"een mogelijke verwisseling bij de volgende kandidaten: {', '.join((str(switch) for switch in self.potentially_switched_candidates))}" ) return sentence.render(self.already_recounted) diff --git a/test/test_e2e.py b/test/test_e2e.py index 103edf1..240ba77 100644 --- a/test/test_e2e.py +++ b/test/test_e2e.py @@ -52,7 +52,7 @@ def test_create_csv_files_a_b(): "Gemeentenummer;0505\n" "\n" "Verkiezingnummer;Kieskringnummer;Gemeentenummer;Gemeentenaam;Stembureaunummer;Stembureaunaam;Stembureau met nul stemmen;Stembureau >=3% ongeldig;Stembureau >=3% blanco;Stembureau >=15 of >=2% verschil tussen toegelaten kiezers en uitgebrachte stemmen;Stembureau met lijst >=50% afwijking;Mogelijk verwisselde kandidaten;Al herteld;Samenvatting\n" - "TK2023;14;0505;Dordrecht;1;Stembureau Binnenstad;;;;ja (28);;;ja;In dit stembureau is er een groot verschil tussen het aantal toegelaten kiezers en het aantal uitgebrachte stemmen (28). Er is wel herteld.\n" + "TK2023;14;0505;Dordrecht;1;Stembureau Binnenstad;;;;ja (28);;;ja;Er is een groot verschil tussen het aantal toegelaten kiezers en het aantal uitgebrachte stemmen (28). Er is wel herteld.\n" ) assert content == expected @@ -91,8 +91,8 @@ def test_create_csv_files_a_b_2(): "Gemeentenummer;1708\n" "\n" "Verkiezingnummer;Kieskringnummer;Gemeentenummer;Gemeentenaam;Stembureaunummer;Stembureaunaam;Aantal geen verklaring voor verschil;Aantal ontbrekende verklaringen voor verschil;Al herteld;Samenvatting\n" - "EP2024;alle;1708;Steenwijkerland;1;Stembureau Holterberg;1;405;;In dit stembureau is er een onverklaard verschil van 1. Daarnaast is er een verschil tussen het aantal toegelaten kiezers en de som van de gegeven verklaringen van 405. Er is niet herteld.\n" - 'EP2024;alle;1708;Steenwijkerland;3;"Stembureau ""De Waarschuwing""";108;;;In dit stembureau is er een onverklaard verschil van 108. Er is niet herteld.\n' + "EP2024;alle;1708;Steenwijkerland;1;Stembureau Holterberg;1;405;;Er is een onverklaard verschil van 1. Daarnaast is er een aantal ontbrekende verklaringen van 405. Er is niet herteld.\n" + 'EP2024;alle;1708;Steenwijkerland;3;"Stembureau ""De Waarschuwing""";108;;;Er is een onverklaard verschil van 108. Er is niet herteld.\n' ) assert content == expected @@ -107,10 +107,10 @@ def test_create_csv_files_a_b_2(): "Gemeentenummer;1708\n" "\n" "Verkiezingnummer;Kieskringnummer;Gemeentenummer;Gemeentenaam;Stembureaunummer;Stembureaunaam;Stembureau met nul stemmen;Stembureau >=3% ongeldig;Stembureau >=3% blanco;Stembureau >=15 of >=2% verschil tussen toegelaten kiezers en uitgebrachte stemmen;Stembureau met lijst >=50% afwijking;Mogelijk verwisselde kandidaten;Al herteld;Samenvatting\n" - "EP2024;alle;1708;Steenwijkerland;1;Stembureau Holterberg;;;;ja (417);Kleurenpartij (51%);;;In dit stembureau is er een groot verschil tussen het aantal toegelaten kiezers en het aantal uitgebrachte stemmen (417). Daarnaast hebben de volgende partijen een opmerkelijk grote afwijking ten opzichte van het gemeentegemiddelde: Kleurenpartij (51%). Er is niet herteld.\n" - "EP2024;alle;1708;Steenwijkerland;2;Stembureau Lege boel;ja;;;;Kleurenpartij (-51%);;;In dit stembureau zijn er 0 stemmen uitgebracht. Daarnaast hebben de volgende partijen een opmerkelijk grote afwijking ten opzichte van het gemeentegemiddelde: Kleurenpartij (-51%). Er is niet herteld.\n" - 'EP2024;alle;1708;Steenwijkerland;3;"Stembureau ""De Waarschuwing""";;ja (3%);ja (3%);ja (108);;;;In dit stembureau is er een hoog percentage ongeldige stemmen (3%). Daarnaast is er een hoog percentage blanco stemmen (3%). Ook is er een groot verschil tussen het aantal toegelaten kiezers en het aantal uitgebrachte stemmen (108). Er is niet herteld.\n' - "EP2024;alle;1708;Steenwijkerland;4;Stembureau Schoolstraat;;;;ja (20%);Het Verschil (61%), Kleurenpartij (-51%);;;In dit stembureau is er een groot verschil tussen het aantal toegelaten kiezers en het aantal uitgebrachte stemmen (20.0%). Daarnaast hebben de volgende partijen een opmerkelijk grote afwijking ten opzichte van het gemeentegemiddelde: Het Verschil (61%), Kleurenpartij (-51%). Er is niet herteld.\n" + "EP2024;alle;1708;Steenwijkerland;1;Stembureau Holterberg;;;;ja (417);Kleurenpartij (51%);;;Er is een groot verschil tussen het aantal toegelaten kiezers en het aantal uitgebrachte stemmen (417). Daarnaast is er een opmerkelijk grote afwijking ten opzichte van het gemeentegemiddelde bij de volgende partijen: Kleurenpartij (51%). Er is niet herteld.\n" + "EP2024;alle;1708;Steenwijkerland;2;Stembureau Lege boel;ja;;;;Kleurenpartij (-51%);;;Er is een aantal uitgebrachte stemmen van 0. Daarnaast is er een opmerkelijk grote afwijking ten opzichte van het gemeentegemiddelde bij de volgende partijen: Kleurenpartij (-51%). Er is niet herteld.\n" + 'EP2024;alle;1708;Steenwijkerland;3;"Stembureau ""De Waarschuwing""";;ja (3%);ja (3%);ja (108);;;;Er is een hoog percentage ongeldige stemmen (3%). Daarnaast is er een hoog percentage blanco stemmen (3%). Ook is er een groot verschil tussen het aantal toegelaten kiezers en het aantal uitgebrachte stemmen (108). Er is niet herteld.\n' + "EP2024;alle;1708;Steenwijkerland;4;Stembureau Schoolstraat;;;;ja (20%);Het Verschil (61%), Kleurenpartij (-51%);;;Er is een groot verschil tussen het aantal toegelaten kiezers en het aantal uitgebrachte stemmen (20.0%). Daarnaast is er een opmerkelijk grote afwijking ten opzichte van het gemeentegemiddelde bij de volgende partijen: Het Verschil (61%), Kleurenpartij (-51%). Er is niet herteld.\n" ) assert content == expected