code: def test_pipeline(jam_fixture):
      D1 = muda.deformers.TimeStretch(rate=2.0)
      D2 = muda.deformers.TimeStretch(rate=1.5)
  
      P = muda.Pipeline([("stretch_1", D1), ("stretch_2", D2)])
  
      jam_orig = deepcopy(jam_fixture)
  
      for jam_new in P.transform(jam_orig):
          assert jam_new is not jam_orig
          __test_time(jam_orig, jam_fixture, 1.0)
  
          # Verify that the state and history objects are intact
          __test_deformer_history(D1, jam_new.sandbox.muda.history[0])
          __test_deformer_history(D2, jam_new.sandbox.muda.history[-1])
  
          __test_time(jam_orig, jam_new, D1.rate[0] * D2.rate[0])
  
imports: from copy import deepcopy
  import re
  import six
  import numpy
  import soundfile
  import jams
  import librosa
  import muda
  import pytest
  import scipy
  from contextlib import contextmanager
label_desc: Use image node_id 39 for calling a global function with example usage: test_pipeline(jam_fixture) without return types