code: def parse(
      self,
      key,
      dest_key=None,
      timeoutSecs=300,
      retryDelaySecs=0.2,
      initialDelaySecs=None,
      pollTimeoutSecs=180,
      noise=None,
      benchmarkLogging=None,
      noPoll=False,
      **kwargs,
  ):
      #
      # Call ParseSetup?source_frames=[keys] . . .
      #
  
      if benchmarkLogging:
          cloudPerfH2O.get_log_save(initOnly=True)
  
      # TODO: multiple keys
      parse_setup_params = {
          "source_frames": '["' + key + '"]'  # NOTE: quote key names
      }
      # h2o_test_utils.check_params_update_kwargs(params_dict, kwargs, 'parse_setup', print_params=H2O.verbose)
      setup_result = self.__do_json_request(
          jsonRequest="/3/ParseSetup",
          cmd="post",
          timeout=timeoutSecs,
          postData=parse_setup_params,
      )
      H2O.verboseprint(
          "ParseSetup result:", h2o_test_utils.dump_json(setup_result)
      )
  
      #
      # and then Parse?source_frames=<keys list> and params from the ParseSetup result
      # Parse?source_frames=[nfs://Users/rpeck/Source/h2o2/smalldata/logreg/prostate.csv]&destination_frame=prostate.hex&parse_type=CSV&separator=44&number_columns=9&check_header=0&single_quotes=false&column_names=['ID',CAPSULE','AGE','RACE','DPROS','DCAPS','PSA','VOL','GLEASON]
      #
  
      parse_params = {
          "source_frames": '["'
          + setup_result["source_frames"][0]["name"]
          + '"]',  # TODO: cons up the whole list
          "destination_frame": dest_key
          if dest_key
          else setup_result["destination_frame"],
          "parse_type": setup_result["parse_type"],
          "separator": setup_result["separator"],
          "single_quotes": setup_result["single_quotes"],
          "check_header": setup_result["check_header"],
          "number_columns": setup_result["number_columns"],
          "column_names": setup_result[
              "column_names"
          ],  # gets stringified inside __do_json_request()
          "column_types": setup_result[
              "column_types"
          ],  # gets stringified inside __do_json_request()
          "na_strings": setup_result["na_strings"],
          "chunk_size": setup_result["chunk_size"],
      }
      H2O.verboseprint("parse_params: " + repr(parse_params))
      h2o_test_utils.check_params_update_kwargs(
          parse_params, kwargs, "parse", print_params=H2O.verbose
      )
  
      parse_result = self.__do_json_request(
          jsonRequest="/3/Parse",
          cmd="post",
          timeout=timeoutSecs,
          postData=parse_params,
          **kwargs,
      )
      H2O.verboseprint(
          "Parse result:", h2o_test_utils.dump_json(parse_result)
      )
  
      # print("Parse result:", repr(parse_result))
      job_key = parse_result["job"]["key"]["name"]
  
      # TODO: dislike having different shapes for noPoll and poll
      if noPoll:
          return this.jobs(job_key)
  
      job_json = self.poll_job(job_key, timeoutSecs=timeoutSecs)
  
      if job_json:
          dest_key = job_json["jobs"][0]["dest"]["name"]
          return self.frames(dest_key)
  
      return None
  
imports: import sys, os, getpass, logging, time, inspect, requests, json, pprint
  import h2o_test_utils
  from h2o_test_utils import log, log_rest
  import h2o_print
label_desc: Use image node_id 15 for calling the H2O obj's underlying member method code with example usage: obj.parse(key, dest_key, timeoutSecs, retryDelaySecs, initialDelaySecs, pollTimeoutSecs, noise, benchmarkLogging, noPoll) and returns: None, this, self