Skip to content

Commit ae957bd

Browse files
authored
Validate DateRangeContext from DateContext (#160)
Signed-off-by: Pascal Tomecek <[email protected]>
1 parent 9408533 commit ae957bd

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

ccflow/context.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,12 @@ class DateRangeContext(ContextBase):
147147
_normalize_start = field_validator("start_date", mode="before")(normalize_date)
148148
_normalize_end = field_validator("end_date", mode="before")(normalize_date)
149149

150+
@model_validator(mode="wrap")
151+
def _date_context_validator(cls, v, handler, info):
152+
if isinstance(v, DateContext):
153+
v = dict(start_date=v.date, end_date=v.date)
154+
return handler(v)
155+
150156

151157
class DatetimeRangeContext(ContextBase):
152158
start_datetime: datetime

ccflow/tests/test_context.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,11 @@ def test_date_range(self):
9696
self.assertEqual(TypeAdapter(DateRangeContext).validate_python(["-1d", "0d"]), c)
9797
self.assertEqual(TypeAdapter(DateRangeContext).validate_python(["-1d", datetime.now()]), c)
9898

99+
def test_date_range_from_date(self):
100+
# Test validation from a DateContext
101+
d0 = date.today()
102+
self.assertEqual(TypeAdapter(DateRangeContext).validate_python(DateContext(date=d0)), DateRangeContext(start_date=d0, end_date=d0))
103+
99104
def test_freq(self):
100105
self.assertEqual(
101106
FreqDateContext.model_validate("5min,2022-01-01"),

0 commit comments

Comments
 (0)