docs: def _gather_pillar(self):
          '''
          Whenever a state run starts, gather the pillar data fresh
          '''
          if self._pillar_override:
              if self._pillar_enc:
                  try:
                      self._pillar_override = salt.utils.crypt.decrypt(
                          self._pillar_override,
                          self._pillar_enc,
                          translate_newlines=True,
                          renderers=getattr(self, 'rend', None),
                          opts=self.opts,
                          valid_rend=self.opts['decrypt_pillar_renderers'])
                  except Exception as exc:
                      log.error('Failed to decrypt pillar override: %s', exc)
  
              if isinstance(self._pillar_override, six.string_types):
                  # This can happen if an entire pillar dictionary was passed as
                  # a single encrypted string. The override will have been
                  # decrypted above, and should now be a stringified dictionary.
                  # Use the YAML loader to convert that to a Python dictionary.
                  try:
                      self._pillar_override = yamlloader.load(
                          self._pillar_override,
                          Loader=yamlloader.SaltYamlSafeLoader)
                  except Exception as exc:
                      log.error('Failed to load CLI pillar override')
                      log.exception(exc)
  
              if not isinstance(self._pillar_override, dict):
                  log.error('Pillar override was not passed as a dictionary')
                  self._pillar_override = None
  
          pillar = salt.pillar.get_pillar(
                  self.opts,
                  self.opts['grains'],
                  self.opts['id'],
                  self.opts['saltenv'],
                  pillar_override=self._pillar_override,
                  pillarenv=self.opts.get('pillarenv'))
          return pillar.compile_pillar()