code: def get_gen(cls, conf):
      if conf["type"].lower() == "int":
          return _IntGen(conf)
      elif conf["type"].lower() == "float":
          return _FloatGen(conf)
      elif conf["type"].lower() == "choice":
          return _ChoiceGen(conf)
      else:
          msg = "Data type %s is not supported" % conf["type"]
          logger.fatal(msg)
          raise KeyError(msg)
  
imports: import abc
  import logging
  from ast import literal_eval
  from math import floor
  from six.moves import reduce, input
  from .AbstractProposer import AbstractProposer
  from ..utils import check_missing_key, get_from_options
label_desc: Use image node_id 3 for calling the _AbstractGen obj's underlying member method code with example usage: obj.get_gen(cls, conf) and returns: _IntGen, _FloatGen, _ChoiceGen