code: def runner(self, fun, timeout=None, full_return=False, **kwargs):
          '''
          Run `runner modules <all-salt.runners>` synchronously
  
          Wraps :py:meth:`salt.runner.RunnerClient.cmd_sync`.
  
          Note that runner functions must be called using keyword arguments.
          Positional arguments are not supported.
  
          :return: Returns the result from the runner module
          '''
          kwargs['fun'] = fun
          runner = salt.runner.RunnerClient(self.opts)
          return runner.cmd_sync(kwargs, timeout=timeout, full_return=full_returnf runner(self, fun, timeout=None, full_return=False, **kwargs):
          '''
          Run `runner modules <all-salt.runners>` synchronously
  
          Wraps :py:meth:`salt.runner.RunnerClient.cmd_sync`.
  
          Note that runner functions must be called using keyword arguments.
          Positional arguments are not supported.
  
          :return: Returns the result from the runner module
          '''
          kwargs['fun'] = fun
          runner = salt.runner.RunnerClient(self.opts)
          return runner.cmd_sync(kwargs, timeout=timeout, full_return=full_return)
docs: Run `runner modules <all-salt.runners>` synchronously
  
          Wraps :py:meth:`salt.runner.RunnerClient.cmd_sync`.
  
          Note that runner functions must be called using keyword arguments.
          Positional arguments are not supported.
  
          :return: Returns the result from the runner module