Source code for dataio.validate.reports.models
from __future__ import annotations
from typing import Any
from pydantic import BaseModel, Field
[docs]
class Finding(BaseModel):
severity: str
code: str
message: str
path: str | None = None
line: int | None = None
column: int | None = None
table: str | None = None
row: int | None = None
field: str | None = None
rule_id: str | None = None
hint: str | None = None
[docs]
class ValidationSummary(BaseModel):
errors: int = 0
warnings: int = 0
infos: int = 0
rows_checked: int = 0
tables_checked: int = 0
[docs]
class ValidationResult(BaseModel):
status: str = "pass"
dataset_kind: str
metadata_spec_version: str | None = None
summary: ValidationSummary = Field(default_factory=ValidationSummary)
findings: list[Finding] = Field(default_factory=list)
inferred: dict[str, Any] = Field(default_factory=dict)
[docs]
def add_finding(self, finding: Finding) -> None:
self.findings.append(finding)
if finding.severity == "error":
self.summary.errors += 1
self.status = "fail"
elif finding.severity == "warning":
self.summary.warnings += 1
if self.status == "pass":
self.status = "warn"
else:
self.summary.infos += 1