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)