code: def test_build_pipeline_repeated_learners_serialisation():
      df_train = pd.DataFrame({"id": ["id1"], "x1": [10.0], "y": [2.3]})
  
      fn = lambda x: x
  
      @fp.curry
      def dummy_learner(df, fn, call):
          return fn, df, {f"dummy_learner_{call}": {}}
  
      @fp.curry
      def dummy_learner_2(df, fn, call):
          return dummy_learner(df, fn, call)
  
      train_fn = build_pipeline(
          dummy_learner(fn=fn, call=1),
          dummy_learner_2(fn=fn, call=2),
          dummy_learner(fn=fn, call=3),
          has_repeated_learners=True,
      )
  
      predict_fn, pred_train, log = train_fn(df_train)
  
      fkml = {
          "pipeline": [
              "dummy_learner",
              "dummy_learner_2",
              "dummy_learner",
          ],
          "output_columns": ["id", "x1", "y"],
          "features": ["id", "x1", "y"],
          "learners": {
              "dummy_learner": [
                  {"fn": fn, "log": {"dummy_learner_1": {}}},
                  {"fn": fn, "log": {"dummy_learner_3": {}}},
              ],
              "dummy_learner_2": [
                  {"fn": fn, "log": {"dummy_learner_2": {}}}
              ],
          },
      }
  
      assert log["__fkml__"] == fkml
      assert "obj" not in log.keys()
  
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 8 for calling a global function with example usage: test_build_pipeline_repeated_learners_serialisation() and returns: fn,  df,  dict, dummy_learner