code: def user(val, **kwargs):  # pylint: disable=unused-argument
      '''
      This can be either a string or a numeric uid
      '''
      if not isinstance(val, six.integer_types):
          # Try to convert to integer. This will fail if the value is a
          # username. This is OK, as we check below to make sure that the
          # value is either a string or integer. Trying to convert to an
          # integer first though will allow us to catch the edge case in
          # which a quoted uid is passed (e.g. '1000').
          try:
              val = int(val)
          except (TypeError, ValueError):
              pass
      if not isinstance(val, (six.integer_types, six.string_types)):
          raise SaltInvocationError('Value must be a username or uid')
      elif isinstance(val, six.integer_types) and val < 0:
          raise SaltInvocationError('\'{0}\' is an invalid uid'.format(val))
      return vaf user(val, **kwargs):  # pylint: disable=unused-argument
      '''
      This can be either a string or a numeric uid
      '''
      if not isinstance(val, six.integer_types):
          # Try to convert to integer. This will fail if the value is a
          # username. This is OK, as we check below to make sure that the
          # value is either a string or integer. Trying to convert to an
          # integer first though will allow us to catch the edge case in
          # which a quoted uid is passed (e.g. '1000').
          try:
              val = int(val)
          except (TypeError, ValueError):
              pass
      if not isinstance(val, (six.integer_types, six.string_types)):
          raise SaltInvocationError('Value must be a username or uid')
      elif isinstance(val, six.integer_types) and val < 0:
          raise SaltInvocationError('\'{0}\' is an invalid uid'.format(val))
      return val
docs: This can be either a string or a numeric uid