+
    Hi	                        ^ RI Ht ^ RIt^ RIHt ^ RIHtHtHt ^ RI	H	t	H
t
 ^RIHt ^RIHtHtHt ^RIHt R	 R
 ltR R ltR R ltR# )    )annotationsN)Path)DictIterableList)datetimetimezone)DEFAULT_BRANDING)LeaderboardEntryParticipantPenalty)summarize_penaltiesc               (    V ^8  d   QhRRRRRRRR/# )	   leaderboardList[LeaderboardEntry]participantsDict[str, Participant]pathr   returnNone )formats   "ځ/Users/lancenlachance/Library/Mobile Documents/com~apple~CloudDocs/PortMadness/MarchMadness/prototype/src/portmadness/renderer.py__annotate__r      s0     8 8'8(8 8 
	8    c                   R R.pVP                  R\        P                   R\        P                   R\        P                   24       VP                  R4       VP                  R4       VP                  R4       \        V ^R7       FA  w  rEVP                  RV R	VP                   R	VP                   R	VP                   R
2	4       KC  	  VP                  RP                  V4      RR7       R# )z# Port Madness Leaderboard u   Brand palette — Primary z	, Accent z
, Neutral z3| Rank | Participant | Bracket Pts | Penalty Reps |z| --- | --- | ---: | ---: |)startz| z | z |
utf-8encodingN)appendr
   primary_hex
accent_hexneutral_hex	enumeratedisplay_namebracket_pointspenalty_units
write_textjoin)r   r   r   linesidxentrys   &&&   r   render_leaderboard_markdownr1      s    
 5b9E	LL
$%5%A%A$B)L\LgLgKhhr  tD  tP  tP  sQ  	R 
LL	LLFG	LL./15
S++,C0D0D/ESI\I\H]]_`	
 6 	OODIIe$wO7r   c               (    V ^8  d   QhRRRRRRRR/# )	r   	penaltieszIterable[Penalty]r   r   r   r   r   r   r   )r   s   "r   r   r   !   s6     E E E(E E 
	Er   c                   \        V 4      p/ pVP                  4        F  w  rVVP                  V4      p. pV FI  p	V	R ,          p
VP                  RV	P                  R4      R V
R\	        V
P                  4       4      /4       KK  	  RV'       d   VP                  MTRV/WE&   K  	  VP                  \        P                  ! V^R7      RR7       R# )		movementssettlement_windowtotal_penalty_unitsr)   packetsindentr!   r"   N)
r   itemsgetr$   sumvaluesr)   r,   jsondumps)r3   r   r   summarypayloadparticipant_idinfoparticipantr8   packetr5   s   &&&        r   export_penalty_packetsrG   !   s    
 "),GG '"&&~6F{+INN'4G)H)3y/?/?/A+B  K44w#
 !0  	OODJJwq1GODr   c               $    V ^8  d   QhRRRRRR/# )r   r   r   r   r   r   r   r   )r   s   "r   r   r   ;   s+     E E'E
E 
Er   c                N   R \         P                  ! \        P                  4      P	                  4       RV  Uu. uF5  pRVP
                  RVP                  RVP                  RVP                  /NK7  	  up/pVP                  \        P                  ! V^R7      RR7       R	# u upi )
generated_atentriesrC   r)   r*   r+   r9   r!   r"   N)r   nowr	   utc	isoformatrC   r)   r*   r+   r,   r?   r@   )r   r   r0   rB   s   &&  r   export_leaderboard_jsonrO   ;   s    
 	X\\2<<> %
 % !%"6"6 2 2 %"6"6!4!4	 %
G 	OODJJwq1GOD
s   ;B"
)
__future__r   r?   pathlibr   typingr   r   r   r   r	   brandingr
   modelsr   r   r   penalty_enginer   r1   rG   rO   r   r   r   <module>rV      s4    "   ' ' ' & : : /8&E4Er   