|
|
@ -166,7 +166,7 @@ def _preprocess_from_to_date( |
|
|
|
|
|
|
|
if from_date is None: |
|
|
|
expected_start_date = time_series.start_date + relativedelta(**{return_period_unit: return_period_value}) |
|
|
|
from_date = _find_closest_date(time_series.data, expected_start_date, 999, as_on_match, "fail")[0] |
|
|
|
from_date = _find_closest_date(time_series, expected_start_date, 999, as_on_match, "fail")[0] |
|
|
|
|
|
|
|
if to_date is None: |
|
|
|
to_date = time_series.end_date |
|
|
@ -181,16 +181,20 @@ def _find_closest_date( |
|
|
|
delta: datetime.timedelta, |
|
|
|
if_not_found: Literal["fail", "nan"], |
|
|
|
) -> Tuple[datetime.datetime, float]: |
|
|
|
"""Helper function to find data for the closest available date""" |
|
|
|
"""Helper function to find data for the closest available date |
|
|
|
|
|
|
|
if delta.days < 0 and date < min(data): |
|
|
|
data: |
|
|
|
TimeSeries data |
|
|
|
""" |
|
|
|
|
|
|
|
if delta.days < 0 and date < min(data.data): |
|
|
|
raise DateOutOfRangeError(date, "min") |
|
|
|
if delta.days > 0 and date > max(data): |
|
|
|
if delta.days > 0 and date > max(data.data): |
|
|
|
raise DateOutOfRangeError(date, "max") |
|
|
|
|
|
|
|
row: tuple = data.get(date, None) |
|
|
|
if row is not None: |
|
|
|
return date, row |
|
|
|
return row |
|
|
|
|
|
|
|
if delta and limit_days != 0: |
|
|
|
return _find_closest_date(data, date + delta, limit_days - 1, delta, if_not_found) |
|
|
|