code: def test_build_pipeline(has_repeated_learners):
      df_train = pd.DataFrame(
          {
              "id": ["id1", "id2", "id3", "id4", "id3", "id4"],
              "x1": [10.0, 13.0, 10.0, 13.0, None, 13.0],
              "x2": [0, 1, 1, 0, 1, 0],
              "cat": ["c1", "c1", "c2", None, "c2", "c4"],
              "y": [2.3, 4.0, 100.0, -3.9, 100.0, -3.9],
          }
      )
  
      df_test = pd.DataFrame(
          {
              "id": ["id4", "id4", "id5", "id6", "id5", "id6"],
              "x1": [12.0, 1000.0, -4.0, 0.0, -4.0, 0.0],
              "x2": [1, 1, 0, None, 0, 1],
              "cat": ["c1", "c2", "c5", None, "c2", "c3"],
              "y": [1.3, -4.0, 0.0, 49, 0.0, 49],
          }
      )
  
      features = ["x1", "x2", "cat"]
      target = "y"
  
      train_fn = build_pipeline(
          placeholder_imputer(
              columns_to_impute=features, placeholder_value=-999
          ),
          count_categorizer(columns_to_categorize=["cat"]),
          xgb_regression_learner(
              features=features,
              target=target,
              num_estimators=20,
              extra_params={"seed": 42},
          ),
          has_repeated_learners=has_repeated_learners,
      )
  
      predict_fn, pred_train, log = train_fn(df_train)
  
      pred_test_with_shap = predict_fn(df_test, apply_shap=True)
      assert set(pred_test_with_shap.columns) - set(
          pred_train.columns
      ) == {"shap_values", "shap_expected_value"}
  
      pred_test_without_shap = predict_fn(df_test)
      assert set(pred_test_without_shap.columns) == set(
          pred_train.columns
      )
  
      pd.testing.assert_frame_equal(
          pred_test_with_shap[pred_test_without_shap.columns],
          pred_test_without_shap,
      )
  
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 1 for calling a global function with example usage: test_build_pipeline(has_repeated_learners) without return types