docs: def call(cmd, input=None, assert_zero_exit_status=True, warn_on_non_zero_exist_status=False, **kwargs):
      """
      :rtype: SubprocessResult
  
      Raises OSError if command was not found
  
      Returns non-zero result in result.ret if subprocess terminated with non-zero exist status.
      """
      if (not kwargs.get('shell')) and isinstance(cmd, basestring):
          raise ValueError('cmd should be list or tuple, not a string: %r' % cmd)
      result = SubprocessResult.call(cmd, input=input, **kwargs)
      if assert_zero_exit_status and result.ret != 0:
          raise SubprocessError(result)
  
      if warn_on_non_zero_exist_status and result.ret != 0:
          logger.warn('subprocess failed %r' % result)
  
      return result