The rule is this: in validators, always raise the types that Pydantic expects (ValueErrors, AssertionErrors, TypeError, and subclasses of these). This allows Pydantic to capture all errors and group them into a single ValidationError, which we can then convert into a single CraftValidationError in from_yaml_data(). This provides a more uniform UI for the reporting of validation errors on the project.
The rule is this: in validators, always raise the types that Pydantic expects (ValueErrors, AssertionErrors, TypeError, and subclasses of these). This allows Pydantic to capture all errors and group them into a single ValidationError, which we can then convert into a single CraftValidationError in from_yaml_data(). This provides a more uniform UI for the reporting of validation errors on the project.