Source code for aisert.models.report
[docs]
class AisertReport:
"""Final validation report containing overall status and detailed results.
Returned by :meth:`Aisert.collect` to provide comprehensive validation outcomes.
Contains both high-level pass/fail status and granular per-validation details.
:param status: ``True`` if all validations passed, ``False`` if any failed
:type status: bool
:param rules: Dictionary mapping execution order to validation results
:type rules: dict
The ``rules`` dictionary has the format::
{1: {'validator': 'ContainsValidator', 'status': True, 'reason': '...'}}
Example usage::
report = Aisert("Hello world").assert_contains(["Hello"]).collect()
if report.status:
print("All validations passed!")
for order, result in report.rules.items():
print(f"{order}: {result['validator']} - {result['status']}")
.. versionadded:: 0.1.0
"""
[docs]
def __init__(self, status: bool, rules: dict):
"""Create a new validation report.
:param status: Overall validation status (``True`` if all passed)
:type status: bool
:param rules: Dictionary of validation results keyed by execution order
:type rules: dict
"""
self.status = status
self.rules = rules
def __str__(self) -> str:
"""Human-readable string representation of the validation report.
:return: Formatted string showing status and rules summary
:rtype: str
"""
return f"Status: {self.status} \n Rules: {self.rules}"