Skip to content

Commit 9189522

Browse files
committed
Improve error handling in EnzymeMLHandler.read_enzymeml
Captures and chains the last ValidationError when raising ValueError if EnzymeML document parsing fails. This provides better error context for debugging invalid EnzymeML files.
1 parent 5eb63b6 commit 9189522

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

pyenzyme/versions/io.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
from typing import Optional
44

55
import pandas as pd
6-
7-
from pydantic import ValidationError
86
import rich
7+
from pydantic import ValidationError
8+
99
from pyenzyme.petab.io import to_petab
1010
from pyenzyme.petab.petab import PEtab
11+
from pyenzyme.sbml.parser import read_sbml
1112
from pyenzyme.sbml.serializer import to_sbml
1213
from pyenzyme.tabular import from_dataframe, read_csv, read_excel, to_pandas
1314
from pyenzyme.versions import v2
14-
from pyenzyme.sbml.parser import read_sbml
1515

1616
AVAILABLE_VERSIONS = ["v1", "v2"]
1717

@@ -38,6 +38,7 @@ def read_enzymeml(cls, path: str) -> v2.EnzymeMLDocument: # noqa: F405
3838
Raises:
3939
ValueError: If the document cannot be parsed with any available version
4040
"""
41+
error = None
4142
for version in AVAILABLE_VERSIONS:
4243
if version == "v1":
4344
try:
@@ -50,10 +51,11 @@ def read_enzymeml(cls, path: str) -> v2.EnzymeMLDocument: # noqa: F405
5051
data = json.load(f)
5152

5253
return v2.EnzymeMLDocument.model_validate(data)
53-
except ValidationError:
54+
except ValidationError as e:
55+
error = e
5456
continue
5557

56-
raise ValueError(f"Invalid EnzymeML version: {path}")
58+
raise ValueError(f"Invalid EnzymeML version: {path}") from error
5759

5860
@classmethod
5961
def read_enzymeml_from_string(cls, data: str) -> v2.EnzymeMLDocument: # noqa: F405

0 commit comments

Comments
 (0)