Skip to content

Commit 472cefb

Browse files
committed
fix(star): repair STAR rendering when zero ballots are found
1 parent eb2387a commit 472cefb

1 file changed

Lines changed: 10 additions & 8 deletions

File tree

abiflib/score_star_tally.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -186,8 +186,8 @@ def STAR_result_from_abifmodel(abifmodel):
186186
retval['winner_tokens'] = [fin1, fin2]
187187

188188
# Add percentage strings for both text output and template use
189-
tvot = retval['totalvoters']
190-
total_stars = retval['total_all_scores']
189+
tvot = retval.get('totalvoters', 0)
190+
total_stars = retval.get('total_all_scores', 0)
191191

192192
# Add percentage strings to candidate score data
193193
for candtok in retval['ranklist']:
@@ -196,9 +196,9 @@ def STAR_result_from_abifmodel(abifmodel):
196196
candinfo['voter_pct_str'] = f"{candinfo['votercount']/tvot:.1%}" if tvot else "0.0%"
197197

198198
# Add percentage strings for finalists
199-
retval['fin1votes_pct_str'] = f"{retval['fin1votes']/tvot:.1%}" if tvot else "0.0%"
200-
if retval['fin2votes']:
201-
retval['fin2votes_pct_str'] = f"{retval['fin2votes']/tvot:.1%}" if tvot else "0.0%"
199+
retval['fin1votes_pct_str'] = f"{retval.get('fin1votes', 0)/tvot:.1%}" if tvot else "0.0%"
200+
# Always set fin2votes_pct_str, even when zero, to avoid KeyError in reporting paths
201+
retval['fin2votes_pct_str'] = f"{retval.get('fin2votes', 0)/tvot:.1%}" if tvot else "0.0%"
202202
retval['final_abstentions_pct_str'] = f"{retval['final_abstentions']/tvot:.1%}" if tvot else "0.0%"
203203

204204
return retval
@@ -234,9 +234,11 @@ def STAR_report(jabmod):
234234
retval += f" -- {candinfo['candname']}\n"
235235

236236
retval += f"Finalists: \n"
237-
retval += f"- {sr['fin1n']} preferred by {sr['fin1votes']:,} of {tvot:,} voters ({sr['fin1votes_pct_str']})\n"
238-
if sr['fin2n']:
239-
retval += f"- {sr['fin2n']} preferred by {sr['fin2votes']:,} of {tvot:,} voters ({sr['fin2votes_pct_str']})\n"
237+
fin1n = sr.get('fin1n')
238+
fin2n = sr.get('fin2n')
239+
retval += f"- {fin1n} preferred by {sr.get('fin1votes', 0):,} of {tvot:,} voters ({sr.get('fin1votes_pct_str', '0.0%')})\n"
240+
if fin2n:
241+
retval += f"- {fin2n} preferred by {sr.get('fin2votes', 0):,} of {tvot:,} voters ({sr.get('fin2votes_pct_str', '0.0%')})\n"
240242
retval += f"- {sr['final_abstentions']:,} abstentions ({sr['final_abstentions_pct_str']})\n"
241243
retval += f"STAR Winner: {sr['winner']}\n"
242244

0 commit comments

Comments
 (0)