code: def augment_random(
      tens: Tensor,
      aug_types: Union[str, List[str]] = "",
      volume: str = "expand",
  ) -> List:
      aug_types_all = [
          "random_brightness",
          "add_shadow",
          "add_snow",
          "add_rain",
          "add_fog",
          "add_gravel",
          "add_sun_flare",
          "add_motion_blur",
          "add_autumn",
          "random_flip",
      ]
  
      if aug_types == "":
          aug_types = aug_types_all
      output: list = []
  
      if not is_list(aug_types):
          raise ValueError(
              "`aug_types` should be a list of function names (str)"
          )
  
      if volume == "expand":
          for aug_type in aug_types:
              if not (aug_type in aug_types_all):
                  raise ValueError(
                      "Incorrect transformation function defined"
                  )
  
              command = aug_type + "(tens)"
              result = eval(command)
  
              output.append(result)
  
      elif volume == "same":
          for aug_type in aug_types:
              if not (aug_type in aug_types_all):
                  raise ValueError(
                      "Incorrect transformation function defined"
                  )
  
          selected_aug = aug_types[
              random.randint(0, len(aug_types) - 1)
          ]
          command = selected_aug + "(tens)"
          output = eval(command)
  
      else:
          raise ValueError("volume type can only be `same` or `expand`")
  
      return output
  
file_path: caer/caer/transforms/color.py
imports: import numpy
  import random
  import cv2
  import math
  from ..coreten import Tensor, to_tensor
  from ..annotations import Union, List, Tuple
  from .functional import is_list, _hls, _exposure_process
label_desc: Use image node_id 12 for calling a global function with example usage: augment_random(tens, aug_types, volume) and returns: output