code: def df_single_op_pull_bounds(
      df,
      red_high,
      yellow_high,
      yellow_low: int = 0,
      red_low: int = 0,
      suffix_mean: str = "_mean",
      suffix_std: str = "_std",
      cols=None,
  ):
      """Calculate traffic light pull bounds for list of cols on first row only
  
      Function can be used with ApplyFunc module.
  
      :param pd.DataFrame df: df to apply this function to
      :param float red_high: higher bound of red traffic light
      :param float yellow_high: higher bound of yellow traffic light
      :param float yellow_low: lower bound of yellow traffic light (optional)
      :param float red_low: lower bound of red traffic light (optional)
      :param str suffix_mean: suffix of mean column. default is '_mean' (optional)
      :param str suffix_std: suffix of std column. default is '_std' (optional)
      :param list cols: list of cols to calculate bounds of (optional)
      """
      if len(df.index) == 0:
          raise ValueError("input df has zero length")
      row = df.iloc[0]
      return pull_bounds(
          row,
          red_high,
          yellow_high,
          yellow_low,
          red_low,
          suffix_mean,
          suffix_std,
          cols,
      )
  
imports: from __future__ import annotations
  import copy
  import fnmatch
  from collections import defaultdict
  from typing import Any
  import numpy
  import pandas
  from popmon.analysis.apply_func import ApplyFunc
  from popmon.base import Module, Pipeline
label_desc: Use image node_id 5 for calling a global function with example usage: df_single_op_pull_bounds(df, red_high, yellow_high, yellow_low, red_low, suffix_mean, suffix_std, cols) and returns: pull_bounds