def get_pull_request_rules_schema( partial_validation: bool = False) -> voluptuous.All: return voluptuous.All( [ voluptuous.All( { voluptuous.Required("name"): str, voluptuous.Required("disabled", default=None): voluptuous.Any(None, {voluptuous.Required("reason"): str}), voluptuous.Required("hidden", default=False): bool, voluptuous.Required("conditions"): voluptuous.All( [voluptuous.Coerce(RuleConditionSchema)], voluptuous.Coerce( conditions.PullRequestRuleConditions), ), voluptuous.Required("actions"): actions.get_action_schemas(partial_validation), }, voluptuous.Coerce(PullRequestRule.from_dict), ), ], voluptuous.Coerce(PullRequestRules), )
def get_defaults_schema( partial_validation: bool, ) -> typing.Dict[typing.Any, typing.Any]: return { # FIXME(sileht): actions.get_action_schemas() returns only actions Actions # and not command only, since only refresh is command only and it doesn't # have options it's not a big deal. voluptuous.Required("actions", default={}): actions.get_action_schemas(partial_validation), }
def get_pull_request_rules_schema(partial_validation: bool = False) -> voluptuous.All: return voluptuous.All( [ voluptuous.All( { voluptuous.Required("name"): str, voluptuous.Required("hidden", default=False): bool, voluptuous.Required("conditions"): [ voluptuous.All(str, voluptuous.Coerce(RuleCondition)) ], voluptuous.Required("actions"): actions.get_action_schemas( partial_validation ), }, voluptuous.Coerce(Rule.from_dict), ), ], voluptuous.Coerce(PullRequestRules), )
raise YAMLInvalid( message="Invalid YAML", error_message=error_message, path=path ) return v PullRequestRulesSchema = voluptuous.All( [ voluptuous.All( { voluptuous.Required("name"): str, voluptuous.Required("hidden", default=False): bool, voluptuous.Required("conditions"): [ voluptuous.All(str, voluptuous.Coerce(RuleCondition)) ], voluptuous.Required("actions"): actions.get_action_schemas(), }, voluptuous.Coerce(Rule.from_dict), ), ], voluptuous.Length(min=1), voluptuous.Coerce(PullRequestRules), ) UserConfigurationSchema = voluptuous.Schema( voluptuous.And( voluptuous.Coerce(YAML), { voluptuous.Required("pull_request_rules"): PullRequestRulesSchema, },
error_message = str(e) raise YAMLInvalid(message="Invalid YAML", error_message=error_message) PullRequestRulesSchema = voluptuous.All( [ voluptuous.All( { voluptuous.Required("name"): str, voluptuous.Required("hidden", default=False): bool, voluptuous.Required("conditions"): [voluptuous.All(str, voluptuous.Coerce(RuleCondition))], voluptuous.Required("actions"): actions.get_action_schemas(), }, voluptuous.Coerce(Rule.from_dict), ), ], voluptuous.Length(min=1), voluptuous.Coerce(PullRequestRules), ) QueueRulesSchema = voluptuous.All( [ voluptuous.All( { voluptuous.Required("name"): str, voluptuous.Required("conditions"):
raise voluptuous.Invalid(message="Invalid condition '%s'. %s" % (value, str(e)), error_message=str(e)) PullRequestRulesSchema = voluptuous.Schema( voluptuous.All( [{ voluptuous.Required("name"): str, voluptuous.Required("hidden", default=False): bool, voluptuous.Required("conditions"): [voluptuous.All(str, voluptuous.Coerce(PullRequestRuleCondition))], voluptuous.Required("actions"): actions.get_action_schemas(), }], voluptuous.Length(min=1), )) def load_pull_request_rules_schema(rules): rules = PullRequestRulesSchema(rules) sorted_rules = sorted(rules, key=operator.itemgetter("name")) grouped_rules = itertools.groupby(sorted_rules, operator.itemgetter("name")) for name, sub_rules in grouped_rules: sub_rules = list(sub_rules) if len(sub_rules) == 1: continue