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

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.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) 

121 

122 

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 ) 

139 

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 }