Writing Comparators
Custom comparators subclass Comparator and return a ConcordanceReport.
from pipeconcord.comparators.base import Comparator
from pipeconcord.core.report import ConcordanceReport
class MyComparator(Comparator):
name = "my-format"
supported_types = ("my-format",)
def can_handle(self, file_a: str, file_b: str, **kwargs: object) -> bool:
return kwargs.get("file_type") == "my-format"
def compare(self, file_a: str, file_b: str, **kwargs: object) -> ConcordanceReport:
return ConcordanceReport(
comparator=self.__class__.__name__,
file_a=file_a,
file_b=file_b,
overall_concordance=1.0,
metrics={"example": 1.0},
)
Register it through pyproject.toml:
[project.entry-points."pipeconcord.comparators"]
my_format = "mypackage.compare:MyComparator"