refactoring

This commit is contained in:
Matthias Bisping 2022-04-07 21:44:04 +02:00
parent 51793d19e9
commit 303970db51
3 changed files with 11 additions and 4 deletions

View File

@ -50,4 +50,7 @@ class Stitcher:
return pairs
def stitch(self, pairs: Iterable[ImageMetadataPair]) -> List[ImageMetadataPair]:
return until_convergence(self.merge_along_both_axes, pairs)
def break_condition(pairs1, pairs2):
return len(pairs1) == len(pairs2)
return until_convergence(self.merge_along_both_axes, break_condition, pairs)

View File

@ -130,8 +130,12 @@ def make_merger_aggregator(direction):
def merge_group(group, direction):
def break_condition(pairs1, pairs2):
return len(pairs1) == len(pairs2)
reduce_group = make_merger_aggregator(direction)
return until_convergence(reduce_group, group)
return until_convergence(reduce_group, break_condition, group)
def merge_group_horizontally(group):

View File

@ -8,7 +8,7 @@ def chunk_iterable(iterable, chunk_size):
return takewhile(truth, map(tuple, starmap(islice, repeat((iter(iterable), chunk_size)))))
def until_convergence(func, *args, **kwargs):
def until_convergence(func, cond, *args, **kwargs):
for a, b in chunk_iterable(iterate(func, *args, **kwargs), chunk_size=2):
if len(a) == len(b):
if cond(a, b):
return a