Skip to content

Commit 5d4b1a3

Browse files
authored
Changed to use ValidationErrorGroup (#584)
This is using @david-pl's `ValidationErrorGroup`. Due to Python 3.10 not having `ExceptionGroup`, moved David's `ValidationErrorGroup` to Kirin for handling multiple validation errors.
1 parent c350997 commit 5d4b1a3

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

src/kirin/ir/exception.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,11 @@ class DefiniteValidationError(ValidationError):
8080
"""Indicates a definite violation that will occur at runtime."""
8181

8282
pass
83+
84+
85+
class ValidationErrorGroup(BaseException):
86+
"""Container for multiple validation errors (Python 3.10+ compatible)."""
87+
88+
def __init__(self, message: str, errors: list[ValidationError]) -> None:
89+
super().__init__(message)
90+
self.errors = errors

src/kirin/validation/validationpass.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from dataclasses import field, dataclass
44

55
from kirin import ir
6-
from kirin.ir.exception import ValidationError
6+
from kirin.ir.exception import ValidationError, ValidationErrorGroup
77

88
T = TypeVar("T")
99

@@ -180,9 +180,8 @@ def raise_if_invalid(self):
180180
"""Raise an exception if validation failed."""
181181
if not self.is_valid:
182182
exceptions = []
183-
for pass_name, pass_errors in self.errors.items():
184-
for err in pass_errors:
185-
exceptions.append(err)
183+
for _, pass_errors in self.errors.items():
184+
exceptions.extend(pass_errors)
186185

187186
message = self._format_errors()
188-
raise ExceptionGroup(message, exceptions)
187+
raise ValidationErrorGroup(message, errors=exceptions)

0 commit comments

Comments
 (0)