From 72db0c081d37df0e7b8b2a32cc48148d06f6ef55 Mon Sep 17 00:00:00 2001 From: Siddhant Date: Sun, 4 Oct 2026 00:47:39 +0530 Subject: [PATCH] fix: validate quantile support before inference --- .../runtime/executors/sktime/executor.py | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/tserve/runtime/executors/sktime/executor.py b/src/tserve/runtime/executors/sktime/executor.py index 9426c44..9898ec2 100644 --- a/src/tserve/runtime/executors/sktime/executor.py +++ b/src/tserve/runtime/executors/sktime/executor.py @@ -203,8 +203,8 @@ def predict(self, request: CoercedPredictRequest) -> CoercedPredictResponse: ``quantiles`` against a forecaster whose ``capability:pred_int`` tag is false is rejected before - ``predict_quantiles`` is called, so that case carries no - estimator message at all. + fitting or prediction, so that case carries no estimator message + at all. Parameters ---------- @@ -231,6 +231,15 @@ def predict(self, request: CoercedPredictRequest) -> CoercedPredictResponse: """ # 1. Parse Request y, X, X_future, fh, quantiles = from_request(request) + if quantiles and not self._forecaster.get_tag("capability:pred_int"): + raise RuntimeError( + f"Model {request.model!r} cannot return quantile predictions, " + f"so the requested quantiles {quantiles} are unavailable.\n\n" + "Drop `quantiles` from the request to get point forecasts " + "only, or load a model that supports them. The catalog marks " + "quantile support for every family: " + "https://tserve.readthedocs.io/en/latest/models/" + ) pred = None pred_quantiles = None @@ -249,16 +258,7 @@ def predict(self, request: CoercedPredictRequest) -> CoercedPredictResponse: ) from error # 3. Get Quantile Forecasts - if quantiles and not self._forecaster.get_tag("capability:pred_int"): - raise RuntimeError( - f"Model {request.model!r} cannot return quantile predictions, " - f"so the requested quantiles {quantiles} are unavailable.\n\n" - "Drop `quantiles` from the request to get point forecasts " - "only, or load a model that supports them. The catalog marks " - "quantile support for every family: " - "https://tserve.readthedocs.io/en/latest/models/" - ) - elif quantiles: + if quantiles: try: pred_quantiles = self._forecaster.predict_quantiles( alpha=quantiles, X=X_future, fh=fh