Skip to content

Commit 7f816a9

Browse files
committed
Updated settings usage
1 parent c5e6e84 commit 7f816a9

File tree

2 files changed

+25
-27
lines changed

2 files changed

+25
-27
lines changed

featuremanagement/_time_window_filter/_recurrence_evaluator.py

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@
55
# -------------------------------------------------------------------------
66
from datetime import datetime, timedelta
77
from typing import Optional
8-
from ._models import RecurrencePatternType, RecurrenceRangeType, TimeWindowFilterSettings, OccurrenceInfo
8+
from ._models import RecurrencePatternType, RecurrenceRangeType, TimeWindowFilterSettings, OccurrenceInfo, Recurrence
99
from ._recurrence_validator import validate_settings, _get_passed_week_days, _sort_days_of_week
1010

1111
DAYS_PER_WEEK = 7
12+
REQUIRED_PARAMETER = "Required parameter: %s"
1213

1314

1415
def is_match(settings: TimeWindowFilterSettings, now: datetime) -> bool:
@@ -20,30 +21,38 @@ def is_match(settings: TimeWindowFilterSettings, now: datetime) -> bool:
2021
:return: True if the current time is within the time window filter settings, otherwise False.
2122
:rtype: bool
2223
"""
23-
validate_settings(settings)
24+
recurrence = settings.recurrence
25+
if recurrence is None:
26+
raise ValueError(REQUIRED_PARAMETER % "Recurrence")
2427

25-
previous_occurrence = _get_previous_occurrence(settings, now)
28+
start = settings.start
29+
end = settings.end
30+
if start is None or end is None:
31+
raise ValueError(REQUIRED_PARAMETER % "Start or End")
32+
33+
validate_settings(recurrence, start, end)
34+
35+
previous_occurrence = _get_previous_occurrence(recurrence, start, now)
2636
if previous_occurrence is None:
2737
return False
2838

29-
occurrence_end_date = previous_occurrence + (settings.end - settings.start)
39+
occurrence_end_date = previous_occurrence + (end - start)
3040
return now < occurrence_end_date
3141

3242

33-
def _get_previous_occurrence(settings: TimeWindowFilterSettings, now: datetime) -> Optional[datetime]:
34-
start = settings.start
43+
def _get_previous_occurrence(recurrence: Recurrence, start: datetime, now: datetime) -> Optional[datetime]:
3544
if now < start:
3645
return None
3746

38-
pattern_type = settings.recurrence.pattern.type
47+
pattern_type = recurrence.pattern.type
3948
if pattern_type == RecurrencePatternType.DAILY:
40-
occurrence_info = _get_daily_previous_occurrence(settings, now)
49+
occurrence_info = _get_daily_previous_occurrence(recurrence, start, now)
4150
elif pattern_type == RecurrencePatternType.WEEKLY:
42-
occurrence_info = _get_weekly_previous_occurrence(settings, now)
51+
occurrence_info = _get_weekly_previous_occurrence(recurrence, start, now)
4352
else:
4453
raise ValueError(f"Invalid recurrence pattern type: {pattern_type}")
4554

46-
recurrence_range = settings.recurrence.range
55+
recurrence_range = recurrence.range
4756
range_type = recurrence_range.type
4857
previous_occurrence = occurrence_info.previous_occurrence
4958
end_date = recurrence_range.end_date
@@ -64,18 +73,16 @@ def _get_previous_occurrence(settings: TimeWindowFilterSettings, now: datetime)
6473
return occurrence_info.previous_occurrence
6574

6675

67-
def _get_daily_previous_occurrence(settings: TimeWindowFilterSettings, now: datetime) -> OccurrenceInfo:
68-
start = settings.start
69-
interval = settings.recurrence.pattern.interval
76+
def _get_daily_previous_occurrence(recurrence: Recurrence, start: datetime, now: datetime) -> OccurrenceInfo:
77+
interval = recurrence.pattern.interval
7078
num_of_occurrences = (now - start).days // interval
7179
previous_occurrence = start + timedelta(days=num_of_occurrences * interval)
7280
return OccurrenceInfo(previous_occurrence, num_of_occurrences + 1)
7381

7482

75-
def _get_weekly_previous_occurrence(settings: TimeWindowFilterSettings, now: datetime) -> OccurrenceInfo:
76-
pattern = settings.recurrence.pattern
83+
def _get_weekly_previous_occurrence(recurrence: Recurrence, start: datetime, now: datetime) -> OccurrenceInfo:
84+
pattern = recurrence.pattern
7785
interval = pattern.interval
78-
start = settings.start
7986
first_day_of_first_week = start - timedelta(days=_get_passed_week_days(start.weekday(), pattern.first_day_of_week))
8087

8188
number_of_interval = (now - first_day_of_first_week).days // (interval * DAYS_PER_WEEK)

featuremanagement/_time_window_filter/_recurrence_validator.py

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
# -------------------------------------------------------------------------
66
from datetime import datetime, timedelta
77
from typing import List
8-
from ._models import RecurrencePatternType, RecurrenceRangeType, TimeWindowFilterSettings, Recurrence
8+
from ._models import RecurrencePatternType, RecurrenceRangeType, Recurrence
99

1010

1111
DAYS_PER_WEEK = 7
@@ -20,22 +20,13 @@
2020
TIME_WINDOW_DURATION_OUT_OF_RANGE = "Time window duration is out of range: %s"
2121

2222

23-
def validate_settings(settings: TimeWindowFilterSettings) -> None:
23+
def validate_settings(recurrence: Recurrence, start: datetime, end: datetime) -> None:
2424
"""
2525
Validate the settings for the time window filter.
2626
2727
:param TimeWindowFilterSettings settings: The settings for the time window filter.
2828
:raises ValueError: If the settings are invalid.
2929
"""
30-
recurrence = settings.recurrence
31-
if recurrence is None:
32-
raise ValueError(REQUIRED_PARAMETER % "Recurrence")
33-
34-
start = settings.start
35-
end = settings.end
36-
if start is None or end is None:
37-
raise ValueError(REQUIRED_PARAMETER % "Start or End")
38-
3930
_validate_recurrence_required_parameter(recurrence, start, end)
4031
_validate_recurrence_pattern(recurrence, start, end)
4132
_validate_recurrence_range(recurrence, start)

0 commit comments

Comments
 (0)