code: def _prep_items_from_base(base, in_files, metadata, separators, force_single=False):
      
      details = []
      in_files = _expand_dirs(in_files, KNOWN_EXTS)
      in_files = _expand_wildcards(in_files)
  
      ext_groups = collections.defaultdict(list)
      for ext, files in itertools.groupby(
              in_files, lambda x: KNOWN_EXTS.get(utils.splitext_plus(x)[-1].lower())):
          ext_groups[ext].extend(list(files))
      for ext, files in ext_groups.items():
          if ext == "bam":
              for f in files:
                  details.append(_prep_bam_input(f, base))
          elif ext in ["fastq", "fq", "fasta"]:
              files, glob_files = _find_glob_matches(files, metadata)
              for fs in glob_files:
                  details.append(_prep_fastq_input(fs, base))
              for fs in fastq.combine_pairs(files, force_single, separators=separators):
                  details.append(_prep_fastq_input(fs, base))
          elif ext in ["vcf"]:
              for f in files:
                  details.append(_prep_vcf_input(f, base))
          else:
              print("Ignoring unexpected input file types %s: %s" % (ext, list(files)))
      return details
docs: Prepare a set of configuration items for input files.