docs: def _readFastaFile(filepath):
      """Read a FASTA file and yields tuples of 'header' and 'sequence' entries.
  
      :param filepath: file path of the FASTA file
  
      :yields: FASTA entries in the format ('header', 'sequence').
          The 'header' string does not contain the '>' and trailing white spaces.
          The 'sequence' string does not contain trailing white spaces, a '*' at
              the end of the sequence is removed.
  
      See also :func:`importProteinDatabase` and
      :func:`maspy.peptidemethods.digestInSilico`.
      """
      processSequences = lambda i: ''.join([s.rstrip() for s in i]).rstrip('*')
      processHeaderLine = lambda line: line[1:].rstrip()
      with io.open(filepath) as openfile:
          #Iterate through lines until the first header is encountered
          try:
              line = next(openfile)
              while line[0] != '>':
                  line = next(openfile)
              header = processHeaderLine(line)
              sequences = list()
          except StopIteration:
              errorText = 'File does not contain fasta entries.'
              raise maspy.errors.FileFormatError(errorText)
  
          for line in openfile:
              if line[0] == '>':
                  yield header, processSequences(sequences)
                  header = processHeaderLine(line)
                  sequences = list()
              else:
                  sequences.append(line)
  
          #Yield last entry
          if sequences:
              yield header, processSequences(sequences)