|
1 | 1 | # TODO Temp to update once generated class is in |
2 | | -from typing import List, Optional |
| 2 | +from typing import Iterator, List |
3 | 3 |
|
4 | 4 | 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 |
6 | 6 | from guardrails.classes.validation.validator_logs import ValidatorLogs |
| 7 | +from guardrails_api_client import ValidationSummary as IValidationSummary |
7 | 8 |
|
8 | 9 |
|
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): |
16 | 11 | @staticmethod |
17 | | - def from_validator_logs( |
| 12 | + def _generate_summaries_from_validator_logs( |
18 | 13 | 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 | + """ |
21 | 20 | for log in validator_logs: |
22 | 21 | validation_result = log.validation_result |
23 | 22 | is_fail_result = isinstance(validation_result, FailResult) |
24 | 23 | failure_reason = validation_result.error_message if is_fail_result else None |
25 | 24 | 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 |
34 | 31 | ) |
| 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) |
35 | 42 | return summaries |
0 commit comments