Problem
In the schema, datetimes are currently derived by adding durations:
predict_start = start_date + train_period
This assumes the duration behaves like a fixed-length timedelta. However,
DurationField may return an isodate.duration.Duration (e.g. P1M, P1Y),
for which direct addition is not supported and calendar semantics are required.
Proposed change
When resolving datetimes from ISO-8601 durations, use the duration’s
calendar-aware shift method instead of direct addition.
from isodate.duration import Duration
if isinstance(train_period, Duration):
predict_start = train_period.shift(start_date)
else:
predict_start = start_date + train_period