Check if predict_at/day is in .totals

- this is a minor sanity check
This commit is contained in:
Alexander Hess 2021-01-24 18:35:14 +01:00
parent f36fffdd4d
commit 0c1ff5338d
Signed by: alexander
GPG key ID: 344EA5AB10D868E0
3 changed files with 12 additions and 4 deletions

View file

@ -145,6 +145,8 @@ per-file-ignores =
src/urban_meal_delivery/forecasts/timify.py:
# No SQL injection as the inputs come from a safe source.
S608,
# The many noqa's are ok.
WPS403,
tests/*.py:
# Type annotations are not strictly enforced.
ANN0, ANN2,

View file

@ -99,7 +99,7 @@ def stl( # noqa:C901,WPS210,WPS211,WPS231
if ns % 2 == 0 or ns < 7:
raise ValueError('`ns` must be odd and `>= 7`')
default_nt = math.ceil((1.5 * frequency) / (1 - (1.5 / ns))) # noqa:WPS432
default_nt = math.ceil((1.5 * frequency) / (1 - (1.5 / ns)))
if nt is not None:
if nt % 2 == 0 or nt < default_nt:
raise ValueError(

View file

@ -168,7 +168,7 @@ class OrderHistory:
training time series, frequency, actual order count at `predict_at`
Raises:
LookupError: `pixel_id` is not in the `grid`
LookupError: `pixel_id` not in `grid` or `predict_at` not in `.totals`
RuntimeError: desired time series slice is not entirely in `.totals`
"""
try:
@ -211,6 +211,8 @@ class OrderHistory:
raise RuntimeError('Not enough historic data for `predict_at`')
actuals_ts = intra_pixel.loc[[predict_at], 'total_orders']
if not len(actuals_ts): # pragma: no cover
raise LookupError('`predict_at` is not in the order history')
return training_ts, frequency, actuals_ts
@ -235,7 +237,7 @@ class OrderHistory:
training time series, frequency, actual order counts on `predict_day`
Raises:
LookupError: `pixel_id` is not in the `grid`
LookupError: `pixel_id` not in `grid` or `predict_day` not in `.totals`
RuntimeError: desired time series slice is not entirely in `.totals`
"""
try:
@ -295,6 +297,8 @@ class OrderHistory:
first_prediction_at:last_prediction_at, # type: ignore
'total_orders',
]
if not len(actuals_ts): # pragma: no cover
raise LookupError('`predict_day` is not in the order history')
return training_ts, frequency, actuals_ts
@ -319,7 +323,7 @@ class OrderHistory:
training time series, frequency, actual order count at `predict_at`
Raises:
LookupError: `pixel_id` is not in the `grid`
LookupError: `pixel_id` not in `grid` or `predict_at` not in `.totals`
RuntimeError: desired time series slice is not entirely in `.totals`
"""
try:
@ -386,5 +390,7 @@ class OrderHistory:
raise RuntimeError('Not enough historic data for `predict_day`')
actuals_ts = intra_pixel.loc[[predict_at], 'total_orders']
if not len(actuals_ts): # pragma: no cover
raise LookupError('`predict_at` is not in the order history')
return training_ts, frequency, actuals_ts