James McCool commited on
Commit
cbdeeca
·
1 Parent(s): b985a1c

Enhance position requirement calculations in the Streamlit app to support both user-defined (flat) and default (nested) configurations. Improved handling of flex percentiles for Superflex and non-Superflex cases, ensuring accurate index calculations for QB, RB, WR, and TE positions.

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +29 -10
src/streamlit_app.py CHANGED
@@ -273,13 +273,23 @@ def designate_custom_position_reqs(league_settings: dict, flex_percentiles: dict
273
  wr_base = league_settings['WR'] * league_settings['TEAMS']
274
  te_base = league_settings['TE'] * league_settings['TEAMS']
275
 
276
- # Handle both nested and flat dictionary structures
277
- if 'QB' in flex_percentiles:
 
278
  # User configuration (flat structure)
279
  qb_rv_index = math.ceil((qb_base) * flex_multipliers['QB'])
280
- rb_rv_index = math.ceil((rb_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['RB'])) * flex_multipliers['RB'])
281
- wr_rv_index = math.ceil((wr_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['WR'])) * flex_multipliers['WR'])
282
- te_rv_index = math.ceil((te_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['TE'])) * flex_multipliers['TE'])
 
 
 
 
 
 
 
 
 
283
  else:
284
  # Default configuration (nested structure)
285
  qb_rv_index = math.ceil((qb_base) * flex_multipliers[league_settings['TYPE']]['QB'])
@@ -307,13 +317,22 @@ def designate_base_position_reqs(league_settings: dict, flex_percentiles: dict,
307
  wr_base = league_settings['WR'] * league_settings['TEAMS']
308
  te_base = league_settings['TE'] * league_settings['TEAMS']
309
 
310
- # Handle both nested and flat dictionary structures
311
- if 'QB' in flex_percentiles:
312
  # User configuration (flat structure)
313
  qb_rv_index = math.ceil(qb_base * flex_multipliers['QB'])
314
- rb_rv_index = math.ceil((rb_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['RB'])) * flex_multipliers['RB'])
315
- wr_rv_index = math.ceil((wr_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['WR'])) * flex_multipliers['WR'])
316
- te_rv_index = math.ceil((te_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['TE'])) * flex_multipliers['TE'])
 
 
 
 
 
 
 
 
 
317
  else:
318
  # Default configuration (nested structure)
319
  qb_rv_index = math.ceil(qb_base * flex_multipliers[league_settings['TYPE']]['QB'])
 
273
  wr_base = league_settings['WR'] * league_settings['TEAMS']
274
  te_base = league_settings['TE'] * league_settings['TEAMS']
275
 
276
+ # Check if we're using user configuration (flat structure) or default configuration (nested structure)
277
+ # User configuration will have direct position keys in flex_multipliers
278
+ if isinstance(flex_multipliers, dict) and 'QB' in flex_multipliers:
279
  # User configuration (flat structure)
280
  qb_rv_index = math.ceil((qb_base) * flex_multipliers['QB'])
281
+
282
+ # Handle flex percentiles - for Superflex, QB is included; for others, it's not
283
+ if 'QB' in flex_percentiles:
284
+ # Superflex case
285
+ rb_rv_index = math.ceil((rb_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['RB'])) * flex_multipliers['RB'])
286
+ wr_rv_index = math.ceil((wr_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['WR'])) * flex_multipliers['WR'])
287
+ te_rv_index = math.ceil((te_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['TE'])) * flex_multipliers['TE'])
288
+ else:
289
+ # Non-Superflex case
290
+ rb_rv_index = math.ceil((rb_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['RB'])) * flex_multipliers['RB'])
291
+ wr_rv_index = math.ceil((wr_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['WR'])) * flex_multipliers['WR'])
292
+ te_rv_index = math.ceil((te_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['TE'])) * flex_multipliers['TE'])
293
  else:
294
  # Default configuration (nested structure)
295
  qb_rv_index = math.ceil((qb_base) * flex_multipliers[league_settings['TYPE']]['QB'])
 
317
  wr_base = league_settings['WR'] * league_settings['TEAMS']
318
  te_base = league_settings['TE'] * league_settings['TEAMS']
319
 
320
+ # Check if we're using user configuration (flat structure) or default configuration (nested structure)
321
+ if isinstance(flex_multipliers, dict) and 'QB' in flex_multipliers:
322
  # User configuration (flat structure)
323
  qb_rv_index = math.ceil(qb_base * flex_multipliers['QB'])
324
+
325
+ # Handle flex percentiles - for Superflex, QB is included; for others, it's not
326
+ if 'QB' in flex_percentiles:
327
+ # Superflex case
328
+ rb_rv_index = math.ceil((rb_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['RB'])) * flex_multipliers['RB'])
329
+ wr_rv_index = math.ceil((wr_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['WR'])) * flex_multipliers['WR'])
330
+ te_rv_index = math.ceil((te_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['TE'])) * flex_multipliers['TE'])
331
+ else:
332
+ # Non-Superflex case
333
+ rb_rv_index = math.ceil((rb_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['RB'])) * flex_multipliers['RB'])
334
+ wr_rv_index = math.ceil((wr_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['WR'])) * flex_multipliers['WR'])
335
+ te_rv_index = math.ceil((te_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['TE'])) * flex_multipliers['TE'])
336
  else:
337
  # Default configuration (nested structure)
338
  qb_rv_index = math.ceil(qb_base * flex_multipliers[league_settings['TYPE']]['QB'])