code: def test_pipeline_works_exo(
      load_uni_exo_data_target_missing, model_name
  ):
      """Tests that the pipeline works for various operations for Univariate
      forecasting with exogenous variables"""
      data, target = load_uni_exo_data_target_missing
  
      exp = TSForecastingExperiment()
      FH = 12
      exp.setup(
          data=data,
          target=target,
          fh=FH,
          numeric_imputation_target="drift",
          numeric_imputation_exogenous="drift",
          enforce_exogenous=False,
      )
  
      assert exp.get_config("y").isna().sum() > 0
      assert exp.get_config("X").isna().sum().sum() > 0
      assert exp.get_config("y_transformed").isna().sum() == 0
      assert exp.get_config("X_transformed").isna().sum().sum() == 0
  
      model = exp.create_model(model_name)
      preds = exp.predict_model(model)
      assert len(preds) == FH
      plot_data = exp.plot_model(model, return_data=True)
      assert isinstance(plot_data, dict)
  
      tuned = exp.tune_model(model)
      preds = exp.predict_model(tuned)
      assert len(preds) == FH
      plot_data = exp.plot_model(tuned, return_data=True)
      assert isinstance(plot_data, dict)
  
      _ = exp.finalize_model(tuned)
  
imports: import os
  import numpy
  import pytest
  import sktime
  from packaging import version
  from sktime.forecasting.compose import ForecastingPipeline, TransformedTargetForecaster
  from time_series_test_utils import _IMPUTE_METHODS_STR, _SCALE_METHODS, _TRANSFORMATION_METHODS, _TRANSFORMATION_METHODS_NO_NEG, _return_model_names_for_missing_data
  from pycaret.time_series import TSForecastingExperiment
label_desc: Use image node_id 9 for calling a global function with example usage: test_pipeline_works_exo(load_uni_exo_data_target_missing, model_name) without return types