code: def iterate_over_file(self, fasta_path):
          
          with self._open(fasta_path) as f:
              for line in f:
                  line = line.rstrip()
  
                  if len(line) == 0:
                      continue
  
                  # have to slice into a bytes object or else I get a single integer
                  first_char = line[0:1]
  
                  if first_char == b">":
                      id_and_seq = self._read_header(line)
                      if id_and_seq is not None:
                          yield id_and_seq
  
                  elif first_char == b";":
                      # semicolon are comment characters
                      continue
                  else:
                      self.current_lines.append(line)
          # the last sequence is still in the lines buffer after we're done with
          # the file so make sure to yield it
          id_and_seq = self._current_entry()
          if id_and_seq is not None:
              yield id_and_seq
docs: Generator that yields identifiers paired with sequences.