in jbi/models.py [0:0]
def validate_actions(cls, actions: list[Action]):
"""
Inspect the list of actions:
- Validate that lookup tags are uniques
- Ensure we haven't exceeded our maximum configured project limit (see error below)
- If the action's bugzilla_user_id is "tbd", emit a warning.
"""
tags = [action.whiteboard_tag.lower() for action in actions]
duplicated_tags = [t for i, t in enumerate(tags) if t in tags[:i]]
if duplicated_tags:
raise ValueError(f"actions have duplicated lookup tags: {duplicated_tags}")
if len(tags) > 50:
raise ValueError(
"The Jira client's `paginated_projects` method assumes we have "
"up to 50 projects configured. Adjust that implementation before "
"removing this validation check."
)
for action in actions:
if action.bugzilla_user_id == "tbd":
warnings.warn(
f"Provide bugzilla_user_id data for `{action.whiteboard_tag}` action."
)
assert action.parameters.status_map or (
"maybe_update_issue_status" not in action.parameters.steps.new
and "maybe_update_issue_status" not in action.parameters.steps.existing
), "`maybe_update_issue_status` was used without `status_map`"
assert action.parameters.resolution_map or (
"maybe_update_issue_resolution" not in action.parameters.steps.new
and "maybe_update_issue_resolution"
not in action.parameters.steps.existing
), "`maybe_update_issue_resolution` was used without `resolution_map`"
return actions