Coverage for jstark / mealkit / mealkit_features.py: 100%
30 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-23 22:34 +0000
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-23 22:34 +0000
1from datetime import date
3from jstark.feature_generator import FeaturePeriodsType
4from jstark.features.count import Count
5from jstark.features.recency_days import RecencyDays
6from jstark.features.customer_count import CustomerCount
7from jstark.features.approx_customer_count import ApproxCustomerCount
8from jstark.features.quantity import Quantity
9from jstark.features.product_count import ProductCount
10from jstark.features.most_recent_purchase_date import MostRecentPurchaseDate
11from jstark.features.earliest_purchase_date import EarliestPurchaseDate
12from jstark.mealkit.order_periods import OrderPeriods
13from jstark.mealkit.order_count import OrderCount
14from jstark.mealkit.approx_order_count import ApproxOrderCount
15from jstark.features.approx_product_count import ApproxProductCount
16from jstark.mealkit.recipe_count import RecipeCount
17from jstark.mealkit.approx_recipe_count import ApproxRecipeCount
18from jstark.mealkit.average_order import AvgOrder
19from jstark.features.discount import Discount
20from jstark.features.feature import Feature
21from jstark.feature_generator import FeatureGenerator
22from jstark.mealkit.average_quantity_per_order import AvgQuantityPerOrder
23from jstark.mealkit.cycles_since_last_order import CyclesSinceLastOrder
24from jstark.mealkit.average_purchase_cycle import AvgPurchaseCycle
25from jstark.mealkit.cuisines import Cuisines
26from jstark.mealkit.cuisine_count import CuisineCount
27from jstark.mealkit.cuisine_count import (
28 ItalianCuisineCount,
29 FrenchCuisineCount,
30 SpanishCuisineCount,
31 SrilankanCuisineCount,
32 LebaneseCuisineCount,
33 GreekCuisineCount,
34 VietnameseCuisineCount,
35 DanishCuisineCount,
36 WesternEuropeCuisineCount,
37 FusionCuisineCount,
38 DutchCuisineCount,
39 KoreanCuisineCount,
40 SouthEastAsianCuisineCount,
41 MalaysianCuisineCount,
42 AmericanCuisineCount,
43 AsianCuisineCount,
44 IndianCuisineCount,
45 GermanCuisineCount,
46 CentralAmericaCuisineCount,
47 ArgentinianCuisineCount,
48 NorthAmericanCuisineCount,
49 NewZealandCuisineCount,
50 CanadianCuisineCount,
51 SwedishCuisineCount,
52 EgyptianCuisineCount,
53 NorthernEuropeanCuisineCount,
54 CajunCuisineCount,
55 AustrianCuisineCount,
56 MexicanCuisineCount,
57 MediterraneanCuisineCount,
58 ThaiCuisineCount,
59 ChineseCuisineCount,
60 LatinAmericanCuisineCount,
61 SouthAsiaCuisineCount,
62 MiddleEasternCuisineCount,
63 TraditionalCuisineCount,
64 SteakhouseCuisineCount,
65 PacificislandsCuisineCount,
66 EastAsiaCuisineCount,
67 BritishCuisineCount,
68 CaribbeanCuisineCount,
69 FilipinoCuisineCount,
70 TurkishCuisineCount,
71 BelgianCuisineCount,
72 SouthAmericanCuisineCount,
73 NorthAfricanCuisineCount,
74 SouthAfricanCuisineCount,
75 WestAfricanCuisineCount,
76 EastAfricanCuisineCount,
77 WesternEuropeanCuisineCount,
78 PortugueseCuisineCount,
79 PeruvianCuisineCount,
80 JapaneseCuisineCount,
81 PacificIslandsCuisineCount,
82 SouthernEuropeCuisineCount,
83 AfricanCuisineCount,
84 CentralAsiaCuisineCount,
85 NorthamericaCuisineCount,
86 EuropeanCuisineCount,
87 MoroccanCuisineCount,
88 AustralianCuisineCount,
89 HungarianCuisineCount,
90 IranianCuisineCount,
91 SoutheastAsiaCuisineCount,
92 HawaiianCuisineCount,
93 ScandinavianCuisineCount,
94 BrazilianCuisineCount,
95 IndonesianCuisineCount,
96 MongolianCuisineCount,
97 RussianCuisineCount,
98 SouthAsianCuisineCount,
99 BulgarianCuisineCount,
100 FusionCuisineCusiineCount,
101 IrishCuisineCount,
102 GeorgianCuisineCount,
103 SouthwestCuisineCount,
104 CambodianCuisineCount,
105 LatinCuisineCount,
106 CubanCuisineCount,
107 SoutheastCuisineCount,
108 SouthHyphenAfricanCuisineCount,
109 JamaicanCuisineCount,
110 IsrealiCuisineCount,
111 EasteuropeanCuisineCount,
112 SingaporeanCuisineCount,
113 NordicCuisineCount,
114 WestHyphenAfricanCuisineCount,
115 NortheastCuisineCount,
116 TonganCuisineCount,
117 WestafricaCuisineCount,
118 ZanzibarianCuisineCount,
119 MidwestCuisineCount,
120)
123class MealkitFeatures(FeatureGenerator):
124 def __init__(
125 self,
126 as_at: date | None = None,
127 feature_periods: FeaturePeriodsType = None,
128 feature_stems: set[str] | list[str] | None = None,
129 first_day_of_week: str | None = None,
130 use_absolute_periods: bool = False,
131 ) -> None:
132 super().__init__(
133 as_at,
134 feature_periods,
135 feature_stems,
136 first_day_of_week,
137 use_absolute_periods,
138 )
140 FEATURE_CLASSES: set[type[Feature]] = {
141 Count,
142 # NetSpend,
143 # GrossSpend,
144 RecencyDays,
145 CustomerCount,
146 ApproxCustomerCount,
147 Quantity,
148 MostRecentPurchaseDate,
149 EarliestPurchaseDate,
150 OrderPeriods,
151 OrderCount,
152 ApproxOrderCount,
153 ProductCount,
154 ApproxProductCount,
155 RecipeCount,
156 ApproxRecipeCount,
157 AvgOrder,
158 Discount,
159 AvgQuantityPerOrder,
160 CyclesSinceLastOrder,
161 AvgPurchaseCycle,
162 Cuisines,
163 CuisineCount,
164 # All of the following are counts for a specific cuisine
165 ItalianCuisineCount,
166 FrenchCuisineCount,
167 SpanishCuisineCount,
168 SrilankanCuisineCount,
169 LebaneseCuisineCount,
170 GreekCuisineCount,
171 VietnameseCuisineCount,
172 DanishCuisineCount,
173 WesternEuropeCuisineCount,
174 FusionCuisineCount,
175 DutchCuisineCount,
176 KoreanCuisineCount,
177 SouthEastAsianCuisineCount,
178 MalaysianCuisineCount,
179 AmericanCuisineCount,
180 AsianCuisineCount,
181 IndianCuisineCount,
182 GermanCuisineCount,
183 CentralAmericaCuisineCount,
184 ArgentinianCuisineCount,
185 NorthAmericanCuisineCount,
186 NewZealandCuisineCount,
187 CanadianCuisineCount,
188 SwedishCuisineCount,
189 EgyptianCuisineCount,
190 NorthernEuropeanCuisineCount,
191 CajunCuisineCount,
192 AustrianCuisineCount,
193 MexicanCuisineCount,
194 MediterraneanCuisineCount,
195 ThaiCuisineCount,
196 ChineseCuisineCount,
197 LatinAmericanCuisineCount,
198 SouthAsiaCuisineCount,
199 MiddleEasternCuisineCount,
200 TraditionalCuisineCount,
201 SteakhouseCuisineCount,
202 PacificislandsCuisineCount,
203 EastAsiaCuisineCount,
204 BritishCuisineCount,
205 CaribbeanCuisineCount,
206 FilipinoCuisineCount,
207 TurkishCuisineCount,
208 BelgianCuisineCount,
209 SouthAmericanCuisineCount,
210 NorthAfricanCuisineCount,
211 SouthAfricanCuisineCount,
212 WestAfricanCuisineCount,
213 EastAfricanCuisineCount,
214 WesternEuropeanCuisineCount,
215 PortugueseCuisineCount,
216 PeruvianCuisineCount,
217 JapaneseCuisineCount,
218 PacificIslandsCuisineCount,
219 SouthernEuropeCuisineCount,
220 AfricanCuisineCount,
221 CentralAsiaCuisineCount,
222 NorthamericaCuisineCount,
223 EuropeanCuisineCount,
224 MoroccanCuisineCount,
225 AustralianCuisineCount,
226 HungarianCuisineCount,
227 IranianCuisineCount,
228 SoutheastAsiaCuisineCount,
229 HawaiianCuisineCount,
230 ScandinavianCuisineCount,
231 BrazilianCuisineCount,
232 IndonesianCuisineCount,
233 MongolianCuisineCount,
234 RussianCuisineCount,
235 SouthAsianCuisineCount,
236 BulgarianCuisineCount,
237 FusionCuisineCusiineCount,
238 IrishCuisineCount,
239 GeorgianCuisineCount,
240 SouthwestCuisineCount,
241 CambodianCuisineCount,
242 LatinCuisineCount,
243 CubanCuisineCount,
244 SoutheastCuisineCount,
245 SouthHyphenAfricanCuisineCount,
246 JamaicanCuisineCount,
247 IsrealiCuisineCount,
248 EasteuropeanCuisineCount,
249 SingaporeanCuisineCount,
250 NordicCuisineCount,
251 WestHyphenAfricanCuisineCount,
252 NortheastCuisineCount,
253 TonganCuisineCount,
254 WestafricaCuisineCount,
255 ZanzibarianCuisineCount,
256 MidwestCuisineCount,
257 }