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

1"AvgOrder feature" 

2 

3from jstark.features.feature import DerivedFeature 

4 

5from pyspark.sql import Column 

6import pyspark.sql.functions as f 

7 

8from jstark.feature_period import FeaturePeriod 

9from .order_count import OrderCount 

10 

11 

12class AvgOrder(DerivedFeature): 

13 "Average orders per given periodunitofmeasure feature" 

14 

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 ) 

28 

29 def default_value(self) -> Column: 

30 return f.lit(None) 

31 

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 ) 

38 

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 )