code: def test_build_pipeline_no_side_effects(has_repeated_learners):
      test_df = pd.DataFrame(
          {"x": [1, 2, 3, 4, 5], "y": [2, 4, 6, 8, 10]}
      )
      orig_df = test_df.copy()
  
      def side_effect_learner(df):
          df["side_effect1"] = df["x"] * 2
          return lambda dataset: dataset, df, {}
  
      def kwargs_learner(df):
          df["side_effect2"] = df["y"] * 2
  
          def p(dataset, mult=2):
              return dataset.assign(x=dataset.x * mult)
  
          return p, p(df), {}
  
      side_effect_pipeline = build_pipeline(
          side_effect_learner,
          kwargs_learner,
          has_repeated_learners=has_repeated_learners,
      )
      side_effect_pipeline(test_df)
  
      pd.testing.assert_frame_equal(test_df, orig_df)
  
file_path: fklearn/tests/training/test_pipeline.py
imports: import itertools
  import numpy
  import pandas
  import pytest
  import toolz
  from fklearn.training.imputation import placeholder_imputer
  from fklearn.training.pipeline import build_pipeline
  from fklearn.training.regression import xgb_regression_learner
  from fklearn.training.transformation import count_categorizer, onehot_categorizer
label_desc: Use image node_id 2 for calling a global function with example usage: test_build_pipeline_no_side_effects(has_repeated_learners) and returns: function,  df,  dict, p,  p,  dict, dataset