docs: def _prep_pub(self,
                    tgt,
                    fun,
                    arg,
                    tgt_type,
                    ret,
                    jid,
                    timeout,
                    **kwargs):
          '''
          Set up the payload_kwargs to be sent down to the master
          '''
          if tgt_type == 'nodegroup':
              if tgt not in self.opts['nodegroups']:
                  conf_file = self.opts.get(
                      'conf_file', 'the master config file'
                  )
                  raise SaltInvocationError(
                      'Node group {0} unavailable in {1}'.format(
                          tgt, conf_file
                      )
                  )
              tgt = salt.utils.minions.nodegroup_comp(tgt,
                                                      self.opts['nodegroups'])
              tgt_type = 'compound'
  
          # Convert a range expression to a list of nodes and change expression
          # form to list
          if tgt_type == 'range' and HAS_RANGE:
              tgt = self._convert_range_to_list(tgt)
              tgt_type = 'list'
  
          # If an external job cache is specified add it to the ret list
          if self.opts.get('ext_job_cache'):
              if ret:
                  ret += ',{0}'.format(self.opts['ext_job_cache'])
              else:
                  ret = self.opts['ext_job_cache']
  
          # format the payload - make a function that does this in the payload
          #   module
  
          # Generate the standard keyword args to feed to format_payload
          payload_kwargs = {'cmd': 'publish',
                            'tgt': tgt,
                            'fun': fun,
                            'arg': arg,
                            'key': self.key,
                            'tgt_type': tgt_type,
                            'ret': ret,
                            'jid': jid}
  
          # if kwargs are passed, pack them.
          if kwargs:
              payload_kwargs['kwargs'] = kwargs
  
          # If we have a salt user, add it to the payload
          if self.opts['syndic_master'] and 'user' in kwargs:
              payload_kwargs['user'] = kwargs['user']
          elif self.salt_user:
              payload_kwargs['user'] = self.salt_user
  
          # If we're a syndication master, pass the timeout
          if self.opts['order_masters']:
              payload_kwargs['to'] = timeout
  
          return payload_kwargs