code: def test_explain_with_lags_future_covariates_series_extending_into_future(
      self,
  ):
      # Constructing future covariates TimeSeries that extends further into the future than the target series
      date_start = date(2012, 12, 12)
      date_end = date(2014, 6, 7)
      days = pd.date_range(date_start, date_end, freq="d")
      fut_cov = np.random.normal(0, 1, len(days)).astype("float32")
      fut_cov_ts = TimeSeries.from_times_and_values(
          days, fut_cov.reshape(-1, 1)
      )
  
      model_cls = LightGBMModel if lgbm_available else XGBModel
      model = model_cls(
          lags=4,
          lags_past_covariates=[-1, -2, -3],
          lags_future_covariates=[2],
          output_chunk_length=1,
      )
  
      model.fit(
          series=self.target_ts,
          past_covariates=self.past_cov_ts,
          future_covariates=fut_cov_ts,
      )
  
      shap_explain = ShapExplainer(model)
      explanation_results = shap_explain.explain()
      for component in ["power", "price"]:
          explanation = explanation_results.get_explanation(
              horizon=1, component=component
          )
  
          # The fut_cov_ts extends further into the future than the target_ts. Hence, at prediction time we know the
          # values of lagged future covariates and we thus no longer expect the end_time() of the explanation
          # TimeSeries to differ from the end_time() of the target TimeSeries
          assert explanation.end_time() == self.target_ts.end_time()
  
imports: import copy
  from datetime import date, timedelta
  import matplotlib.pyplot
  import numpy
  import pandas
  import pytest
  import shap
  import sklearn
  from dateutil.relativedelta import relativedelta
  from numpy.testing import assert_array_equal
  from sklearn.preprocessing import MinMaxScaler
  from darts import TimeSeries
  from darts.dataprocessing.transformers import Scaler
  from darts.explainability.explainability_result import ShapExplainabilityResult
  from darts.explainability.shap_explainer import MIN_BACKGROUND_SAMPLE, ShapExplainer
  from darts.models import CatBoostModel, ExponentialSmoothing, LightGBMModel, LinearRegressionModel, NotImportedModule, RegressionModel, XGBModel
  from darts.utils.timeseries_generation import linear_timeseries
label_desc: Use image node_id 4 for calling the TestShapExplainer obj's underlying member method code with example usage: obj.test_explain_with_lags_future_covariates_series_extending_into_future() without return types