def merge_values(mergeables_out: Iterable, mergeables_in: Iterable) -> Iterable: """ Merge values of second argument into values of first argument and return first argument. """ if mergeables_out is not None and mergeables_in is not None: for mergeable_out, mergeable_in in zip(mergeables_out, mergeables_in): Utils.merge_values(mergeable_out, mergeable_in) elif mergeables_out is None and mergeables_in is not None: mergeables_out = mergeables_in # This should treat the 4 possible cases: # 1. both arguments are non-empty: first if statement # 2. First argument is None and second is not empty: elif statement # 3. First argument is not empty and second is None: return first # list, no need to do anything # 4. Both arguments are None: return first, it's None anyway. return mergeables_out
def reducer(mergeables_out, mergeables_in): """ Merges two given lists of values that were returned by the mapper function for two different ranges. Args: mergeables_out (list): A list of computed (mergeable)values for a given entry range in a dataset. The elements of this list will be updated with the information contained in the elements of the other argument list. mergeables_in (list): A list of computed (mergeable)values for a given entry range in a dataset. Returns: list: The list of updated (mergeable)values. """ for mergeable_out, mergeable_in in zip(mergeables_out, mergeables_in): Utils.merge_values(mergeable_out, mergeable_in) return mergeables_out