예제 #1
0
 def validate_boolean_mutual_exclusion(flags_dict):
     flag_count = sum(bool(val) for val in flags_dict.values())
     if flag_count == 1 or (not required and flag_count == 0):
         return True
     raise _exceptions.ValidationError(
         '{} one of ({}) must be True.'.format(
             'Exactly' if required else 'At most', ', '.join(flag_names)))
예제 #2
0
 def validate_mutual_exclusion(flags_dict):
     flag_count = sum(1 for val in flags_dict.values() if val is not None)
     if flag_count == 1 or (not required and flag_count == 0):
         return True
     raise _exceptions.ValidationError(
         '{} one of ({}) must have a value other than None.'.format(
             'Exactly' if required else 'At most', ', '.join(flag_names)))
예제 #3
0
def mark_bool_flags_as_mutual_exclusive(flag_names,
                                        required=False,
                                        flag_values=_flagvalues.FLAGS):
    """Ensures that only one flag among flag_names is True.

  Args:
    flag_names: [str], names of the flags.
    required: bool. If true, exactly one flag must be True. Otherwise, at most
        one flag can be True, and it is valid for all flags to be False.
    flag_values: flags.FlagValues, optional FlagValues instance where the flags
        are defined.
  """
    for flag_name in flag_names:
        if not flag_values[flag_name].boolean:
            raise _exceptions.ValidationError(
                'Flag --{} is not Boolean, which is required for flags used in '
                'mark_bool_flags_as_mutual_exclusive.'.format(flag_name))

    def validate_boolean_mutual_exclusion(flags_dict):
        flag_count = sum(bool(val) for val in flags_dict.values())
        if flag_count == 1 or (not required and flag_count == 0):
            return True
        raise _exceptions.ValidationError(
            '{} one of ({}) must be True.'.format(
                'Exactly' if required else 'At most', ', '.join(flag_names)))

    register_multi_flags_validator(flag_names,
                                   validate_boolean_mutual_exclusion,
                                   flag_values=flag_values)
예제 #4
0
 def checker(flags_dict):
     self.call_args.append(flags_dict)
     values = flags_dict.values()
     # Make sure all the flags have different values.
     if len(set(values)) != len(values):
         raise _exceptions.ValidationError('Specific message')
     return True
예제 #5
0
 def validate_mutual_exclusion(flags_dict):
     flag_count = sum(1 for val in flags_dict.values() if val is not None)
     if flag_count == 1 or (not required and flag_count == 0):
         return True
     message = (
         '%s one of (%s) must be specified.' %
         ('Exactly' if required else 'At most', ', '.join(flag_names)))
     raise _exceptions.ValidationError(message)
예제 #6
0
  def verify(self, flag_values):
    """Verifies that constraint is satisfied.

    flags library calls this method to verify Validator's constraint.

    Args:
      flag_values: flags.FlagValues, the FlagValues instance to get flags from.
    Raises:
      Error: Raised if constraint is not satisfied.
    """
    param = self._get_input_to_checker_function(flag_values)
    if not self.checker(param):
      raise _exceptions.ValidationError(self.message)
예제 #7
0
 def checker(value):
     if value is not None and parser.is_outside_bounds(value):
         message = '%s is not %s' % (value, parser.syntactic_help)
         raise _exceptions.ValidationError(message)
     return True
예제 #8
0
 def raise_unexpected_error(x):
     del x
     raise _exceptions.ValidationError('Got unexpected error.')
예제 #9
0
 def raise_unexpected_error(x):
     del x
     raise _exceptions.ValidationError('Should not be raised.')
예제 #10
0
 def checker(x):
     self.call_args.append(x)
     raise _exceptions.ValidationError('Specific message')
예제 #11
0
 def checker(x):
     self.call_args.append(x)
     if x == 1:
         return True
     raise _exceptions.ValidationError('Specific message')