code: def test_pipeline_types_exo(load_uni_exo_data_target):
      """Tests preprocessing pipeline data types with exogenous variables"""
  
      data, target = load_uni_exo_data_target
  
      exp = TSForecastingExperiment()
  
      # Default
      exp.setup(data=data, target=target)
      assert isinstance(exp.pipeline, ForecastingPipeline)
      assert isinstance(
          exp.pipeline.steps[-1][1], TransformedTargetForecaster
      )
  
      # Transform Target only
      exp.setup(
          data=data,
          target=target,
          numeric_imputation_target=True,
      )
      assert isinstance(exp.pipeline, ForecastingPipeline)
      assert isinstance(
          exp.pipeline.steps[-1][1], TransformedTargetForecaster
      )
  
      # Transform Exogenous only
      exp.setup(
          data=data,
          target=target,
          numeric_imputation_exogenous=True,
      )
      assert isinstance(exp.pipeline, ForecastingPipeline)
      assert isinstance(
          exp.pipeline.steps[-1][1], TransformedTargetForecaster
      )
  
      # Transform Exogenous & Target
      exp.setup(
          data=data,
          target=target,
          numeric_imputation_target=True,
          numeric_imputation_exogenous=True,
      )
      assert isinstance(exp.pipeline, ForecastingPipeline)
      assert isinstance(
          exp.pipeline.steps[-1][1], TransformedTargetForecaster
      )
  
      # No preprocessing (still sets empty pipeline internally)
      exp.setup(data=data, target=target)
      assert isinstance(exp.pipeline, ForecastingPipeline)
      assert isinstance(
          exp.pipeline.steps[-1][1], TransformedTargetForecaster
      )
  
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 3 for calling a global function with example usage: test_pipeline_types_exo(load_uni_exo_data_target) without return types