code: def test_pull():
      datastore = {"to_profile": {"asc_numbers": get_test_data()}}
  
      module1 = ApplyFunc(apply_to_key="to_profile")
      module1.add_apply_func(np.std, suffix="_std", entire=True)
      module1.add_apply_func(np.mean, suffix="_mean", entire=True)
  
      module2 = ApplyFunc(
          apply_to_key="to_profile", features=["asc_numbers"]
      )
      module2.add_apply_func(
          pull,
          suffix="_pull",
          axis=1,
          suffix_mean="_mean",
          suffix_std="_std",
          cols=["a", "b"],
      )
  
      pipeline = Pipeline(modules=[module1, module2])
      datastore = pipeline.transform(datastore)
  
      p = datastore["to_profile"]["asc_numbers"]
  
      np.testing.assert_almost_equal(p["a_pull"].values[0], -1.714816)
      np.testing.assert_almost_equal(p["b_pull"].values[0], -1.0)
  
file_path: popmon/tests/popmon/analysis/profiling/test_apply_func.py
imports: import numpy
  import pandas
  import pytest
  from popmon.analysis.apply_func import ApplyFunc, apply_func, apply_func_array
  from popmon.analysis.functions import pull
  from popmon.analysis.profiling.pull_calculator import ExpandingPullCalculator, ReferencePullCalculator, RefMedianMadPullCalculator, RollingPullCalculator
  from popmon.base import Pipeline
label_desc: Use image node_id 2 for calling a global function with example usage: test_pull() without return types