docs: def process_item(self, item, spider):
          """
          Use the Pa11y command line tool to get an a11y report.
          """
          config_file = write_pa11y_config(item)
          args = [
              self.pa11y_path,
              item["url"],
              '--config={file}'.format(file=config_file.name),
          ]
          for flag, value in self.cli_flags.items():
              args.append("--{flag}={value}".format(flag=flag, value=value))
  
          retries_remaining = 3
          while retries_remaining:
              logline = " ".join(args)
              if retries_remaining != 3:
                  logline += u"  # (retry {num})".format(num=3-retries_remaining)
              spider.logger.info(logline)
  
              proc = sp.Popen(
                  args, shell=False,
                  stdout=sp.PIPE, stderr=sp.PIPE,
              )
              stdout, stderr = proc.communicate()
              if proc.returncode in (0, 2):
                  # `pa11y` ran successfully!
                  # Return code 0 means no a11y errors.
                  # Return code 2 means `pa11y` identified a11y errors.
                  # Either way, we're done, so break out of the `while` loop
                  break
              else:
                  # `pa11y` did _not_ run successfully!
                  # We sometimes get the error "Truffler timed out":
                  # truffler is what accesses the web page for `pa11y1`.
                  # https://www.npmjs.com/package/truffler
                  # If this is the error, we can resolve it just by trying again,
                  # so decrement the retries_remaining and start over.
                  retries_remaining -= 1
  
          if retries_remaining == 0:
              raise DropItem(
                  u"Couldn't get pa11y results for {url}. Error:\n{err}".format(
                      url=item['url'],
                      err=stderr,
                  )
              )
  
          pa11y_results = load_pa11y_results(stdout, spider, item['url'])
          check_title_match(item['page_title'], pa11y_results, spider.logger)
          track_pa11y_stats(pa11y_results, spider)
          os.remove(config_file.name)
          write_pa11y_results(item, pa11y_results, Path(spider.data_dir))
          return item