def merge_by_range(reason_groups): if not reason_groups: return [] by_range = {} for group in reason_groups: range_key = range_key_for_group(group) existing = by_range.get(range_key) if not existing: # Shallow copy of group. by_range[range_key] = dict(group) continue # We only care about these two keys, the rest should be the same. # I guess we could assert that... sort_key = string_helpers.longest_substring(existing['sort_key'], group['sort_key']) failure_keys = sorted(set(existing['failure_keys'] + group['failure_keys'])) by_range[range_key].update({ 'sort_key': sort_key, 'failure_keys': failure_keys, }) return sorted(by_range.values(), key=operator.itemgetter('sort_key'))
def merge_by_range(reason_groups): if not reason_groups: return [] by_range = {} for group in reason_groups: range_key = range_key_for_group(group) existing = by_range.get(range_key) if not existing: # Shallow copy of group. by_range[range_key] = dict(group) continue # We only care about these two keys, the rest should be the same. # I guess we could assert that... sort_key = string_helpers.longest_substring(existing['sort_key'], group['sort_key']) failure_keys = sorted( set(existing['failure_keys'] + group['failure_keys'])) by_range[range_key].update({ 'sort_key': sort_key, 'failure_keys': failure_keys, }) return sorted(by_range.values(), key=operator.itemgetter('sort_key'))
def test_longest_substring(self): self.assertEquals(string_helpers.longest_substring('foo', 'bar'), '') self.assertEquals(string_helpers.longest_substring('foo', 'foo'), 'foo') self.assertEquals(string_helpers.longest_substring('aa', 'aaa'), 'aa') self.assertEquals(string_helpers.longest_substring('aaa', 'aa'), 'aa')
def test_longest_substring(self): self.assertEquals(string_helpers.longest_substring('foo', 'bar'), '') self.assertEquals(string_helpers.longest_substring('foo', 'foo'), 'foo') self.assertEquals(string_helpers.longest_substring('aa', 'aaa'), 'aa') self.assertEquals(string_helpers.longest_substring('aaa', 'aa'), 'aa')