One Checker Guide
def generate_report(self) -> str: """Generate a formatted report of all check results""" if not self.results: return "No checks have been run yet." summary = { CheckerResult.PASS: 0, CheckerResult.FAIL: 0, CheckerResult.WARNING: 0, CheckerResult.ERROR: 0 } report_lines = [f"\n{'='*60}", f"One Checker Report: {self.name}", f"{'='*60}\n"] for result in self.results: summary[result.result] += 1 status_icon = { CheckerResult.PASS: "✓", CheckerResult.FAIL: "✗", CheckerResult.WARNING: "⚠", CheckerResult.ERROR: "!" }.get(result.result, "?") report_lines.append(f"{status_icon} [{result.result.value.upper()}] {result.check_name}") report_lines.append(f" {result.message}") if result.details: report_lines.append(f" Details: {json.dumps(result.details, indent=2)}") report_lines.append("") report_lines.append(f"{'='*60}") report_lines.append(f"Summary: {summary[CheckerResult.PASS]} passed, " f"{summary[CheckerResult.FAIL]} failed, " f"{summary[CheckerResult.WARNING]} warnings, " f"{summary[CheckerResult.ERROR]} errors") return "\n".join(report_lines) if name == " main ": # Create a OneChecker instance checker = OneChecker("DataConsistencyChecker")
checker.register_check("User-profile one-to-one", check_relationships) one checker
def check_one_to_one_relationship(self, left_data: List, right_data: List, left_key: str, right_key: str) -> OneCheckReport: """Check that relationships are one-to-one, not one-to-many""" left_keys = [item[left_key] for item in left_data] right_keys = [item[right_key] for item in right_data] # Check if any left key maps to multiple right items from collections import Counter right_counts = Counter(right_keys) violations = [] for key in set(left_keys): if right_counts.get(key, 0) > 1: violations.append({ 'key': key, 'count': right_counts[key] }) if violations: return OneCheckReport( check_name="One-to-one relationship check", result=CheckerResult.FAIL, message=f"Found {len(violations)} keys with multiple relationships", details={'violations': violations} ) else: return OneCheckReport( check_name="One-to-one relationship check", result=CheckerResult.PASS, message="All relationships are one-to-one" ) def generate_report(self) ->
clean_data = [ {'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}, {'id': 3, 'name': 'Charlie'} ] CheckerResult.ERROR: 0 } report_lines = [f"\n{'='*60}"
def clean_check(): return passing_checker.check_unique_primary_key(clean_data, 'id')
def check_config(): return checker.check_single_active_configuration(configs)