From b0728fd9e30fbf1203de0dfaaa22e5043cfbd005 Mon Sep 17 00:00:00 2001 From: Daniel Weindl Date: Wed, 2 Jul 2025 14:34:51 +0200 Subject: [PATCH] v2: prettify petablint output Previously, the raw ValidationError tracebacks where shown, which is not what a user wants to see. Related to #369. --- petab/petablint.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/petab/petablint.py b/petab/petablint.py index 244b7536..702eb533 100755 --- a/petab/petablint.py +++ b/petab/petablint.py @@ -6,6 +6,7 @@ import logging import sys +import pydantic from colorama import Fore from colorama import init as init_colorama from jsonschema.exceptions import ValidationError as SchemaValidationError @@ -179,12 +180,24 @@ def main(): case 2: from petab.v2.lint import lint_problem - validation_issues = lint_problem(args.yaml_file_name) - if validation_issues: - validation_issues.log(logger=logger) + try: + validation_issues = lint_problem(args.yaml_file_name) + if validation_issues: + # Handle petab.v2.lint.ValidationTask issues + validation_issues.log(logger=logger) + sys.exit(1) + logger.info("PEtab format check completed successfully.") + sys.exit(0) + except pydantic.ValidationError as e: + # Handle Pydantic validation errors + for err in e.errors(): + loc = ", ".join(str(loc) for loc in err["loc"]) + msg = err["msg"] + # TODO: include model info here once available + # https://github.com/pydantic/pydantic/issues/7224 + logger.error(f"Error in field(s) `{loc}`: {msg}") sys.exit(1) - logger.info("PEtab format check completed successfully.") - sys.exit(0) + case _: logger.error( "The provided PEtab files are of unsupported version "