code: def _write_out_argfile(argfile, out, fnargs, parallel, out_keys, input_files, work_dir):
      
      with open(argfile, "w") as out_handle:
          if argfile.endswith(".json"):
              record_name, record_attrs = _get_record_attrs(out_keys)
              if record_name:
                  if parallel in ["multi-batch"]:
                      recs = _nested_cwl_record(out, record_attrs, input_files)
                  elif parallel in ["single-split", "multi-combined", "multi-parallel", "batch-single",
                                    "single-single"]:
                      recs = [_collapse_to_cwl_record_single(utils.to_single_data(xs), record_attrs, input_files)
                              for xs in out]
                  else:
                      samples = [utils.to_single_data(xs) for xs in out]
                      recs = [_collapse_to_cwl_record(samples, record_attrs, input_files)]
                  json.dump(_combine_cwl_records(recs, record_name, parallel),
                              out_handle, sort_keys=True, indent=4, separators=(', ', ': '))
              elif parallel in ["single-split", "multi-combined", "batch-split"]:
                  json.dump(_convert_to_cwl_json([utils.to_single_data(xs) for xs in out], fnargs, input_files),
                              out_handle, sort_keys=True, indent=4, separators=(', ', ': '))
              else:
                  json.dump(_convert_to_cwl_json(utils.to_single_data(utils.to_single_data(out)), fnargs, input_files),
                              out_handle, sort_keys=True, indent=4, separators=(', ', ': '))
          else:
              yaml.safe_dump(out, out_handle, default_flow_style=False, allow_unicode=False)
docs: Write output argfile, preparing a CWL ready JSON or YAML representation of the world.