def validate_actions()

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