+
    i:                        ^ RI Ht ^ RIHt ^ RIHtHt ^ RIHtH	t	H
t
 ^RIHt ^RIHtHtHtHt R R ltRR
 R lltR R ltR	# )    )annotationsdefaultdict)date	timedelta)DictIterableList)Config)
GameResultMovementPenaltyPickc                    V ^8  d   QhRRRR/# )   	referencer   returnstr )formats   "ڇ/Users/lancenlachance/Library/Mobile Documents/com~apple~CloudDocs/PortMadness/MarchMadness/prototype/src/portmadness/penalty_engine.py__annotate__r      s     < < <# <    c                    V \        V P                  4       R 7      ,
          pV\        ^R 7      ,           pVP                  4        RVP                  4        2# ))daysu   →)r   weekday	isoformat)r   mondaysaturdays   &  r   compute_settlement_windowr       sN    	(9(9(;<<F	q))H !X%7%7%9$:;;r   Nc               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r   pickszIterable[Pick]resultszDict[str, GameResult]	movementszDict[str, Movement]configr   reference_datezdate | Noner   zList[Penalty]r   )r   s   "r   r   r      sD     ( (("( #( 	(
  ( (r   c                   . pV  EFA  pVP                  VP                  4      pV'       g   K)  VP                  VP                  8X  d   KF  VP                  VP                  4      pV'       g   Kk  VP                  ;'       g    Tp	V	'       g   \        R VP                   R24      h\        V	4      p
VP                  VP                  ,          pVP                  \        VP                  VP                  VP                  VP                  VP                  VV
VP                  RVP                  RVP                  /R7	      4       EKD  	  V# )zNo played_on date for game z  and no reference date provided.round_labelregion)	participant_idgame_idmovement_namereps
multiplier
total_repssettlement_windowopponent_teammetadata)getr+   picked_teamwinning_team	played_on
ValueErrorr    	base_repsround_multiplierappendr   r*   namer(   r)   )r"   r#   r$   r%   r&   	penaltiespickresultmovementsettlement_anchorr0   r/   s   &&&&&       r   calculate_penaltiesrA      s&     "IT\\*v222==!4!45",,>> -fnn-==]^  66GH''&*A*AA
#22&mm''!22%"3$11!6#5#5hoo	
! @ r   c                    V ^8  d   QhRRRR/# )r   r<   zIterable[Penalty]r   z0Dict[str, List[Dict[str, Dict[str, int] | str]]]r   )r   s   "r   r   r   <   s       5r   c           
        \        R  4      pV  FN  pWP                  ,          VP                  ,          pW2P                  ;;,          VP                  ,          uu&   KP  	  / pVP                  4        FM  w  rV. p\        VP                  4       RR7       F#  w  rVP                  RVR\        V4      /4       K%  	  WtV&   KO  	  V# )c                     \        R  4      # )c                      \        \        4      # N)r   intr   r   r   <lambda>7summarize_penalties.<locals>.<lambda>.<locals>.<lambda>@   s	    K$4r   r   r   r   r   rH   %summarize_penalties.<locals>.<lambda>@   s
    45r   T)reverser0   r$   )	r   r*   r0   r,   r/   itemssortedr:   dict)	r<   summarypenaltyr$   
normalizedr*   windowspacketswindows	   &        r   summarize_penaltiesrU   <   s     5@55G 223G4M4MN	''(G,>,>>(  DFJ#*==?9;!'!FFNN'i "G &->" $3 r   rF   )
__future__r   collectionsr   datetimer   r   typingr   r	   r
   r%   r   modelsr   r   r   r   r    rA   rU   r   r   r   <module>r[      s-    " # $ ' '  7 7<(Vr   