docs: def CreateHunt(flow_name=None,
                 flow_args=None,
                 hunt_runner_args=None,
                 context=None):
    """Creates a new hunt.
  
    Args:
      flow_name: String with a name of a flow that will run on all the clients
          in the hunt.
      flow_args: Flow arguments to be used. A proto, that depends on a flow.
      hunt_runner_args: flows_pb2.HuntRunnerArgs instance. Used to specify
          description, client_rule_set, output_plugins and other useful
          hunt attributes.
      context: API context.
  
    Raises:
      ValueError: if flow_name is empty.
  
    Returns:
      Hunt object corresponding to the created hunt.
    """
    if not flow_name:
      raise ValueError("flow_name can't be empty")
  
    request = hunt_pb2.ApiCreateHuntArgs(flow_name=flow_name)
    if flow_args:
      request.flow_args.value = flow_args.SerializeToString()
      request.flow_args.type_url = utils.GetTypeUrl(flow_args)
  
    if hunt_runner_args:
      request.hunt_runner_args.CopyFrom(hunt_runner_args)
  
    data = context.SendRequest("CreateHunt", request)
    return Hunt(data=data, context=context)