@@ -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