@@ -25,6 +25,7 @@ def inner(names: list[str]) -> pl.Expr:
25
25
.otherwise (expr )
26
26
)
27
27
return expr
28
+
28
29
return inner
29
30
30
31
@@ -49,7 +50,26 @@ def context_cols(attr, silent: bool = True) -> dict[str, ColSpec]:
49
50
else card_context [name ][attr ],
50
51
),
51
52
f"pick_{ attr } " : ColSpec (
52
- col_type = ColType .AGG , expr = pl .col (f"pick_{ attr } _sum" ) / pl .col ("num_taken" )
53
+ col_type = ColType .GROUP_BY , expr = pl .col (f"pick_{ attr } _sum" )
54
+ ),
55
+ f"pool_{ attr } " : ColSpec (
56
+ col_type = ColType .NAME_SUM ,
57
+ expr = (
58
+ lambda name , card_context : pl .lit (None )
59
+ if card_context [name ].get (attr ) is None
60
+ or math .isnan (card_context [name ][attr ])
61
+ else card_context [name ][attr ] * pl .col (f"pool_{ name } " )
62
+ ),
63
+ ),
64
+ f"pool_{ attr } _sum" : ColSpec (
65
+ col_type = ColType .PICK_SUM ,
66
+ expr = lambda names : pl .sum_horizontal (
67
+ [pl .col (f"pool_{ attr } _{ name } " ) for name in names ]
68
+ ),
69
+ ),
70
+ f"pool_pick_{ attr } _sum" : ColSpec (
71
+ col_type = ColType .PICK_SUM ,
72
+ expr = pl .col (f"pick_{ attr } _sum" ) + pl .col (f"pool_{ attr } _sum" ),
53
73
),
54
74
f"seen_{ attr } _is_greatest" : ColSpec (
55
75
col_type = ColType .NAME_SUM ,
@@ -79,7 +99,7 @@ def context_cols(attr, silent: bool = True) -> dict[str, ColSpec]:
79
99
col_type = ColType .PICK_SUM ,
80
100
expr = lambda names : pl .sum_horizontal (
81
101
[pl .col (f"seen_{ attr } _{ name } " ) for name in names ]
82
- )
102
+ ),
83
103
),
84
104
f"least_{ attr } _seen" : ColSpec (
85
105
col_type = ColType .PICK_SUM ,
0 commit comments