Coverage for jstark / mealkit / average_order.py: 100%
16 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
1"AvgOrder feature"
3from jstark.features.feature import DerivedFeature
5from pyspark.sql import Column
6import pyspark.sql.functions as f
8from jstark.feature_period import FeaturePeriod
9from .order_count import OrderCount
12class AvgOrder(DerivedFeature):
13 "Average orders per given periodunitofmeasure feature"
15 def column_expression(self) -> Column:
16 return (
17 OrderCount(
18 as_at=self.as_at,
19 feature_period=FeaturePeriod(
20 self.feature_period.period_unit_of_measure,
21 self.feature_period.start,
22 self.feature_period.end,
23 ),
24 first_day_of_week=self._first_day_of_week,
25 ).column
26 / self.feature_period.number_of_periods
27 )
29 def default_value(self) -> Column:
30 return f.lit(None)
32 @property
33 def description_subject(self) -> str:
34 return (
35 "Average number of orders per "
36 + f"{self.feature_period.period_unit_of_measure.name.lower()}"
37 )
39 @property
40 def feature_name(self) -> str:
41 return (
42 "AverageOrdersPer"
43 + f"{self.feature_period.period_unit_of_measure.name.title()}"
44 + f"_{self.feature_period.mnemonic}"
45 )