from dataclasses import dataclass import json @dataclass class Event: source_key: str source_sequence_number: int destination_key: str destination_sequence_number: int def test_order(l): keys = [] for event in l: if event.source_key not in keys: keys.append(event.source_key) if event.destination_key not in keys: keys.append(event.destination_key) partitions = dict(zip(keys, [[] for _ in range(len(keys))])) for event in l: partitions[event.source_key].append(event.source_sequence_number) partitions[event.destination_key].append(event.destination_sequence_number) #print(event.source_key, event.source_sequence_number, event.destination_key, event.destination_sequence_number) ordered = True for _, value in partitions.items(): sorted_check = value == sorted(value) if not sorted_check: ordered = False #print(key, sorted_check, value) return ordered if __name__ == "__main__": with open("./sorted.json", 'r') as f: l = json.load(f) l = [Event(**x) for x in l] print(len(l)) print("ordered: ", test_order(l))