Formatters API Reference

qualink.formatters — Output formatters for validation results.

from qualink.formatters import (
    FormatterConfig,
    ResultFormatter,
    HumanFormatter,
    JsonFormatter,
    MarkdownFormatter,
)

qualink.formatters.base

@dataclass(frozen=True)

class FormatterConfig

Field Type Default
show_metrics bool True
show_issues bool True
show_passed bool False
colorize bool True

class ResultFormatter(LoggingMixin, ABC)

ResultFormatter(config: FormatterConfig | None = None)
Param Type Default
config `FormatterConfig None`
@abstractmethod format(result: ValidationResult) → str

qualink.formatters.human_formatter

class HumanFormatter(ResultFormatter)

format(result: ValidationResult) → str

qualink.formatters.json_formatter

class JsonFormatter(ResultFormatter)

format(result: ValidationResult) → str

qualink.formatters.markdown_formatter

class MarkdownFormatter(ResultFormatter)

format(result: ValidationResult) → str

Creating Custom Formatters

Subclass ResultFormatter and implement format():

from qualink.formatters import ResultFormatter
from qualink.core.result import ValidationResult

class CsvFormatter(ResultFormatter):
    def format(self, result: ValidationResult) -> str:
        lines = ["check,constraint,status,metric"]
        for check_name, results in result.report.check_results.items():
            for cr in results:
                metric = f"{cr.metric:.4f}" if cr.metric is not None else ""
                lines.append(f"{check_name},{cr.constraint_name},{cr.status},{metric}")
        return "\n".join(lines)