code: def get_searcher(searcher_name: str, user_init_args, **kwargs):
      assert (
          searcher_name in SearcherFactory.searcher_presets
      ), f"{searcher_name} is not a valid option. Options are {SearcherFactory.searcher_presets.keys()}"
      init_args = {
          arg: kwargs[arg]
          for arg in SearcherFactory.searcher_required_args[
              searcher_name
          ]
      }
      init_args.update(
          SearcherFactory.searcher_default_args[searcher_name]
      )
      init_args.update(user_init_args)
  
      return SearcherFactory.searcher_presets[searcher_name](
          **init_args
      )
  
imports: from ray.tune.search.basic_variant import BasicVariantGenerator
  from ray.tune.search.hyperopt import HyperOptSearch
label_desc: Use image node_id 1 for calling the SearcherFactory obj's underlying member method code with example usage: obj.get_searcher(searcher_name, user_init_args) and returns: SearcherFactory