class_docstr: Transformation controller which applies multi transformations
  to each data sample.
class_docstr_tok: ["Transformation","controller","which","applies","multi","transformations","to","each","data","sample","."]
docstr: Check and create transform method instance.
  
  :param str flint_method: flint method string.
  :param dict flint_classes: method to its flint classes
  :param dict flint_path: task to its flint objs path
  :return: flint instances list
docstr_tok: ["Check","and","create","transform","method","instance",".",":","param","str","flint_method",":","flint","method","string",".",":","param","dict","flint_classes",":","method","to","its","flint","classes",":","param","dict","flint_path",":","task","to","its","flint","objs","path",":","return",":","flint","instances","list"]
code: def _create_flint_objs(self, flint_method, flint_classes, flint_path):
      """
      Check and create transform method instance.
  
      :param str flint_method: flint method string.
      :param dict flint_classes: method to its flint classes
      :param dict flint_path: task to its flint objs path
      :return: flint instances list
      """
  
      if isinstance(flint_method, str):
          methods = [flint_method]
      elif isinstance(flint_method, list):
          methods = flint_method
      else:
          raise ValueError(
              "Method {0} is not allowed in task {1}".format(
                  flint_method, self.task
              )
          )
      config = (
          self.trans_config
          if flint_path is TASK_TRANSFORMATION_PATH
          else self.sub_config
      )
  
      objs = []
      # support any legal sequence transformation
      for method in methods:
          new_objs = []
          method_params = config.get(method, {})
          if method in flint_classes:
              if isinstance(method_params, list):
                  # create multi objects according passed params
  
                  for index in range(len(method_params)):
                      # multi objs not pipeline objs
                      new_objs.append(
                          [
                              flint_classes[method](
                                  **method_params[index]
                              )
                          ]
                      )
              else:
                  new_objs.append(
                      [flint_classes[method](**method_params)]
                  )
          else:
              raise ValueError(
                  "Method {0} is not allowed in task {1}".format(
                      method, self.task
                  )
              )
  
          if not objs:
              objs = (
                  [obj[0] for obj in new_objs]
                  if len(methods) == 1
                  else new_objs
              )
          else:
              cached_objs = []
  
              for x in product(objs, new_objs):
                  cached_objs.append(Pipeline(list(x[0] + x[1])))
              objs = cached_objs
  
      return objs
  
imports: from tqdm import tqdm
  from abc import ABC
  from itertools import product
  from ...input.dataset import Dataset
  from ...common.utils.seed import set_seed
  from ...common.utils.logger import logger
  from ...common.preprocess import EnProcessor
  from ...common.utils.load import pkg_class_load, load_module_from_file
  from ..transformation import Transformation, Pipeline
  from ..subpopulation import SubPopulation
  from ...common.settings import TASK_TRANSFORMATION_PATH, ALLOWED_TRANSFORMATIONS, TASK_SUBPOPULATION_PATH, ALLOWED_SUBPOPULATIONS
label_desc: Use image node_id 9 for calling the Generator obj's underlying member method code with example usage: obj._create_flint_objs(flint_method, flint_classes, flint_path) and returns: objs