docs: def _spelling_pipeline(self, sources, options, personal_dict):
          """Check spelling pipeline."""
  
          for source in self._pipeline_step(sources, options, personal_dict):
              # Don't waste time on empty strings
              if source._has_error():
                  yield Results([], source.context, source.category, source.error)
              elif not source.text or source.text.isspace():
                  continue
              else:
                  encoding = source.encoding
                  if source._is_bytes():
                      text = source.text
                  else:
                      # UTF-16 and UTF-32 don't work well with Aspell and Hunspell,
                      # so encode with the compatible UTF-8 instead.
                      if encoding.startswith(('utf-16', 'utf-32')):
                          encoding = 'utf-8'
                      text = source.text.encode(encoding)
                  self.log('', 3)
                  self.log(text, 3)
                  cmd = self.setup_command(encoding, options, personal_dict)
                  self.log("Command: " + str(cmd), 4)
  
                  try:
                      wordlist = util.call_spellchecker(cmd, input_text=text, encoding=encoding)
                      yield Results(
                          [w for w in sorted(set(wordlist.replace('\r', '').split('\n'))) if w],
                          source.context,
                          source.category
                      )
                  except Exception as e:  # pragma: no cover
                      err = self.get_error(e)
                      yield Results([], source.context, source.category, err)