code: def test_pipeline_processors_are_pipelines(dummy_data):
      def percentile_clip(series, l_perc=0.01, h_perc=0.99):
          # Note: this func is useless in ML (data leakage; percentiles are not fitted)
          l_thresh = np.percentile(series, l_perc * 100)
          h_thresh = np.percentile(series, h_perc * 100)
          return series.clip(l_thresh, h_thresh)
  
      lower = 0.02
      series_pipeline = SeriesPipeline(
          processors=[
              SeriesPipeline(
                  processors=[
                      SeriesProcessor(
                          series_names=["TMP", "EDA", "ACC_x"],
                          function=percentile_clip,
                          l_perc=lower,
                      )
                  ]
              )
          ]
      )
  
      assert len(series_pipeline.get_required_series()) == 3
      assert set(series_pipeline.get_required_series()) == set(
          ["TMP", "EDA", "ACC_x"]
      )
      assert len(series_pipeline.processing_steps) == 1
      assert (
          series_pipeline.processing_steps[0].name == "percentile_clip"
      )
  
      res = series_pipeline.process(
          dummy_data,
          return_all_series=True,
          drop_keys=["ACC_z"],
          return_df=True,
      )
      assert len(res.columns) == 4
      assert set(res.columns) == set(["TMP", "EDA", "ACC_x", "ACC_y"])
  
      # let's also test the repr string
      print(series_pipeline)
  
file_path: tsflex/tests/test_processing_series_pipeline.py
imports: import os
  from pathlib import Path
  import dill
  import numpy
  import pandas
  import pytest
  from tsflex.processing import SeriesPipeline, SeriesProcessor, dataframe_func
  from tsflex.processing.series_pipeline import _ProcessingError
  from .utils import dummy_data
label_desc: Use image node_id 7 for calling a global function with example usage: test_pipeline_processors_are_pipelines(dummy_data) and returns: series