code: def test_shapley_multiple_series_with_different_static_covs(self):
      model_cls = LightGBMModel if lgbm_available else XGBModel
      model = model_cls(
          lags=4,
          output_chunk_length=1,
      )
      model.fit(
          series=self.target_ts_multiple_series_with_different_static_covs,
      )
      shap_explain = ShapExplainer(
          model,
          background_series=self.target_ts_multiple_series_with_different_static_covs,
      )
      explanation_results = shap_explain.explain()
  
      assert len(explanation_results.feature_values) == 2
  
      # model trained on multiple series will take column names of first series -> even though
      # static covs have different names, the output will show the same names
      for explained_forecast in explanation_results.explained_forecasts:
          comps_out = explained_forecast[1]["price"].columns.tolist()
          assert comps_out[-1] == "type_statcov_target_price"
  
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 12 for calling the TestShapExplainer obj's underlying member method code with example usage: obj.test_shapley_multiple_series_with_different_static_covs() without return types