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