Source code for mucho.comparison.comparator.entity.entity

from typing import Set

from .meta import EntityComparatorMeta
from mucho.comparison import ComparisonResult


[docs]class EntityComparator(metaclass=EntityComparatorMeta): """Compares two entities by comparing their dimensions""" @property def comparators(self): return self._comparators
[docs] def compare(self, src, trg): """Compares two entities by comparing their dimensions and returns the result of the comparison codified as dimension properties. :param src: source entity of the comparison :param trg: target entity of the comparison :return: result of the comparison """ result = ComparisonResult() for name, instance in self.comparators.items(): setattr(result, name, instance.compare(src, trg)) return result
@property def variable_names(self) -> Set[str]: names = set() for dimension, dimension_comparator in self.comparators.items(): for property in dimension_comparator.properties: names.add( "{dimension}.{property}".format( dimension=dimension, property=property)) return names