code: def test_pipeline_no_exo_but_exo_steps(load_pos_and_neg_data):
      """Tests preprocessing pipeline data types without exogenous variables"""
      data = load_pos_and_neg_data
  
      exp = TSForecastingExperiment()
  
      # Make sure that no exogenous steps are added to the pipeline when
      # there is no exogenous data
      exp.setup(data=data, numeric_imputation_exogenous=True)
      assert len(exp.pipeline.steps) == 1
  
      exp.setup(
          data=data,
          numeric_imputation_exogenous=True,
          transform_exogenous="cos",
      )
      assert len(exp.pipeline.steps) == 1
  
      exp.setup(
          data=data,
          numeric_imputation_exogenous=True,
          scale_exogenous="min-max",
      )
      assert len(exp.pipeline.steps) == 1
  
      exp.setup(
          data=data,
          numeric_imputation_exogenous=True,
          transform_exogenous="cos",
          scale_exogenous="min-max",
      )
      assert len(exp.pipeline.steps) == 1
  
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 1 for calling a global function with example usage: test_pipeline_no_exo_but_exo_steps(load_pos_and_neg_data) without return types