added preprocess fromto date, does not work properly yet
This commit is contained in:
parent
583ca98e51
commit
db8377f0ef
@ -144,13 +144,43 @@ def _preprocess_match_options(as_on_match: str, prior_match: str, closest: str)
|
|||||||
return as_on_delta, prior_delta
|
return as_on_delta, prior_delta
|
||||||
|
|
||||||
|
|
||||||
|
def _preprocess_from_to_date(
|
||||||
|
from_date: datetime.date | str,
|
||||||
|
to_date: datetime.date | str,
|
||||||
|
time_series: Mapping = None,
|
||||||
|
align_dates: bool = True,
|
||||||
|
return_period_unit: Literal["years", "months", "days"] = None,
|
||||||
|
return_period_value: int = None,
|
||||||
|
as_on_match: str = "closest",
|
||||||
|
prior_match: str = "closest",
|
||||||
|
closest: Literal["previous", "next", "exact"] = "previous",
|
||||||
|
) -> tuple:
|
||||||
|
|
||||||
|
as_on_match, prior_match = _preprocess_match_options(as_on_match, prior_match, closest)
|
||||||
|
|
||||||
|
if (from_date is None or to_date is None) and time_series is None:
|
||||||
|
raise ValueError("Provide either to_date and from_date or time_series data")
|
||||||
|
|
||||||
|
if time_series is not None and (return_period_unit is None or return_period_value is None):
|
||||||
|
raise ValueError("Provide return period for calculation of from_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]
|
||||||
|
|
||||||
|
if to_date is None:
|
||||||
|
to_date = time_series.end_date
|
||||||
|
|
||||||
|
return from_date, to_date
|
||||||
|
|
||||||
|
|
||||||
def _find_closest_date(
|
def _find_closest_date(
|
||||||
data: Mapping[datetime.datetime, float],
|
data: Mapping[datetime.datetime, float],
|
||||||
date: datetime.datetime,
|
date: datetime.datetime,
|
||||||
limit_days: int,
|
limit_days: int,
|
||||||
delta: datetime.timedelta,
|
delta: datetime.timedelta,
|
||||||
if_not_found: Literal["fail", "nan"],
|
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):
|
if delta.days < 0 and date < min(data):
|
||||||
|
Loading…
Reference in New Issue
Block a user