Skip to content

Commit 5620dc3

Browse files
added generator for generate summaries from logs
1 parent 505628c commit 5620dc3

File tree

1 file changed

+27
-20
lines changed

1 file changed

+27
-20
lines changed
Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,42 @@
11
# TODO Temp to update once generated class is in
2-
from typing import List, Optional
2+
from typing import Iterator, List
33

44
from guardrails.classes.generic.arbitrary_model import ArbitraryModel
5-
from guardrails.classes.validation.validation_result import ErrorSpan, FailResult
5+
from guardrails.classes.validation.validation_result import FailResult
66
from guardrails.classes.validation.validator_logs import ValidatorLogs
7+
from guardrails_api_client import ValidationSummary as IValidationSummary
78

89

9-
class ValidationSummary(ArbitraryModel):
10-
validator_name: str
11-
validator_status: str
12-
failure_reason: Optional[str]
13-
error_spans: Optional[List["ErrorSpan"]] = []
14-
property_path: Optional[str]
15-
10+
class ValidationSummary(IValidationSummary, ArbitraryModel):
1611
@staticmethod
17-
def from_validator_logs(
12+
def _generate_summaries_from_validator_logs(
1813
validator_logs: List[ValidatorLogs],
19-
) -> List["ValidationSummary"]:
20-
summaries = []
14+
) -> Iterator["ValidationSummary"]:
15+
"""
16+
Generate a list of ValidationSummary objects from a list of
17+
ValidatorLogs objects. Using an iterator to allow serializing
18+
the summaries to other formats.
19+
"""
2120
for log in validator_logs:
2221
validation_result = log.validation_result
2322
is_fail_result = isinstance(validation_result, FailResult)
2423
failure_reason = validation_result.error_message if is_fail_result else None
2524
error_spans = validation_result.error_spans if is_fail_result else []
26-
summaries.append(
27-
ValidationSummary(
28-
validator_name=log.validator_name,
29-
validator_status=log.validation_result.outcome,
30-
property_path=log.property_path,
31-
failure_reason=failure_reason,
32-
error_spans=error_spans,
33-
)
25+
yield ValidationSummary(
26+
validatorName=log.validator_name,
27+
validatorStatus=log.validation_result.outcome, # type: ignore
28+
propertyPath=log.property_path,
29+
failureReason=failure_reason,
30+
errorSpans=error_spans, # type: ignore
3431
)
32+
33+
@staticmethod
34+
def from_validator_logs(
35+
validator_logs: List[ValidatorLogs],
36+
) -> List["ValidationSummary"]:
37+
summaries = []
38+
for summary in ValidationSummary._generate_summaries_from_validator_logs(
39+
validator_logs
40+
):
41+
summaries.append(summary)
3542
return summaries

0 commit comments

Comments
 (0)