docs: def sequence_generator(input_fp):
      """Yield (id, sequence) from an input file
  
      Parameters
      ----------
      input_fp : filepath
          A filepath, which can be any valid fasta or fastq file within the
          limitations of scikit-bio's IO registry.
  
      Notes
      -----
      The use of this method is a stopgap to replicate the existing `parse_fasta`
      functionality while at the same time allowing for fastq support.
  
      Raises
      ------
      skbio.io.FormatIdentificationWarning
          If the format of the input file cannot be determined.
  
      Returns
      -------
      (str, str)
          The ID and sequence.
  
      """
      logger = logging.getLogger(__name__)
      kw = {}
      if sniff_fasta(input_fp)[0]:
          format = 'fasta'
      elif sniff_fastq(input_fp)[0]:
          format = 'fastq'
  
          kw['variant'] = _get_fastq_variant(input_fp)
      else:
          # usually happens when the fasta file is empty
          # so need to return no sequences (and warn)
          msg = "input file %s does not appear to be FASTA or FASTQ" % input_fp
          logger.warn(msg)
          warnings.warn(msg, UserWarning)
          return
  
      # some of the test code is using file paths, some is using StringIO.
      if isinstance(input_fp, io.TextIOBase):
          input_fp.seek(0)
  
      for record in skbio.read(input_fp, format=format, **kw):
          yield (record.metadata['id'], str(record))