code: def rsync_cmdline(self, src, dest, *rsync_options):
          
          if not all(isinstance(item, str) for item in rsync_options):
              raise TypeError("cmd needs to be a list of strings")
          if self._port is None:
              raise ProgrammingError("run connect() first")
          ssh_cmd = ['ssh']
          for opt in self._get_ssh_options():
              ssh_cmd.append('-o')
              ssh_cmd.append(opt)
          rsync_cmd = ['rsync', '-e', ' '.join(ssh_cmd),
                       str(src), 'phablet@localhost:{}'.format(dest)]
          rsync_cmd.extend(rsync_options)
          _logger.debug("rsync_cmdline %r-> %r (with %s) => %r",
                        src, dest, ' '.join(rsync_options), rsync_cmd)
          return rsync_cmd
docs: Get argument list for meth:`subprocess.Popen()` to run rsync.
  
          :param src:
              source file or directory
          :param dest:
              destination file or directory
          :param rsync_options:
              any additional arguments to pass to rsync, useful if you
              want to pass '-a'
          :returns:
              argument list to pass as the first argument to subprocess.Popen()
  
          .. note::
              you must call :meth:`connect()` at least once
              before calling this method.
  
          This method returns the ``args`` argument (first argument) to
          subprocess.Popen() required to rsync something over to the phablet
          device. You can use it to construct your own connections, to intercept
          command output or to setup any additional things that you may require.
  
          .. versionadded:: 0.2