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

1from datetime import date 

2 

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) 

123 

124 

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 ) 

141 

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 }