Skip to content

check_predict_X_forecast_override

yohou.testing.forecaster.check_predict_X_forecast_override(forecaster, y_test, X_forecast, forecasting_horizon=3)

Check predict with X_forecast override produces different results.

Validates that passing X_forecast at predict time overrides the stored forecasts without mutating forecaster state.

Parameters

Name Type Description Default
forecaster BaseForecaster

Fitted forecaster instance (fitted with X_forecast).

required
y_test DataFrame

Test target data.

required
X_forecast DataFrame

External forecasts for override.

required
forecasting_horizon int

Number of steps ahead to forecast.

3

Source Code

Show/Hide source
def check_predict_X_forecast_override(
    forecaster,
    y_test: pl.DataFrame,
    X_forecast: pl.DataFrame,
    forecasting_horizon: int = 3,
) -> None:
    """Check predict with X_forecast override produces different results.

    Validates that passing X_forecast at predict time overrides the stored
    forecasts without mutating forecaster state.

    Parameters
    ----------
    forecaster : BaseForecaster
        Fitted forecaster instance (fitted with X_forecast).
    y_test : pl.DataFrame
        Test target data.
    X_forecast : pl.DataFrame
        External forecasts for override.
    forecasting_horizon : int, default=3
        Number of steps ahead to forecast.

    """
    # Store original raw
    original_raw = forecaster._X_forecast_raw_

    # Predict with override
    y_pred = forecaster.predict(
        forecasting_horizon=forecasting_horizon,
        X_forecast=X_forecast,
    )

    assert isinstance(y_pred, pl.DataFrame), (
        f"predict() with X_forecast override must return pl.DataFrame, got {type(y_pred).__name__}"
    )

    # State unchanged (predict must not mutate stored raw)
    if original_raw is not None:
        assert forecaster._X_forecast_raw_.shape == original_raw.shape, (
            "predict() with X_forecast override must not mutate _X_forecast_raw_"
        )