docs: def queue_entry_point(function, input_hash, depends_on=[], name=None):
      '''
      :param function: function to run
      :param input_hash: input to new job
      :param depends_on: list of data object IDs and/or job IDs (local or remote) to wait for before the job can be run
      :type depends_on: list of strings
      :param name: job name (optional)
      :returns: new local job ID
  
      This function should only be called by a locally running job, so
      all relevant DX_TEST_* environment variables should be set.
  
      This function will set up the home directory for the job, add an
      entry in job_outputs.json, and append the job information to the
      job_queue.json file.  (Both files found in
      $DX_TEST_JOB_HOMEDIRS.)
      '''
      ensure_env_vars()
  
      all_job_outputs_path = os.path.join(environ['DX_TEST_JOB_HOMEDIRS'], 'job_outputs.json')
  
      with open(all_job_outputs_path, 'r') as fd:
          all_job_outputs = json.load(fd, object_pairs_hook=collections.OrderedDict)
          job_id = 'localjob-' + str(len(all_job_outputs))
  
      with open(all_job_outputs_path, write_mode) as fd:
          all_job_outputs[job_id] = None
          json.dump(all_job_outputs, fd, indent=4)
          fd.write(eol)
  
      job_homedir = os.path.join(environ['DX_TEST_JOB_HOMEDIRS'], job_id)
      os.mkdir(job_homedir)
  
      job_queue_path = os.path.join(environ['DX_TEST_JOB_HOMEDIRS'], 'job_queue.json')
      with open(job_queue_path, 'r') as fd:
          job_queue = json.load(fd)
      job_entry = {"id": job_id,
                   "function": function,
                   "input_hash": input_hash,
                   "depends_on": depends_on}
      if name is not None:
          job_entry['name'] = name
      job_queue.append(job_entry)
      with open(job_queue_path, write_mode) as fd:
          json.dump(job_queue, fd, indent=4)
          fd.write(eol)
  
      return job_id