src/services/intervals.py
BeforeProposed
+11−2
11def intervals(rows, instrument, start, end):
2 # TODO: clip and combine usable intervals without bridging gaps.
3 return []
2 spans = sorted((max(start, row['start']), min(end, row['end']))
3 for row in rows
4 if row['instrument'] == instrument and not row['closed']
5 and row['start'] < end and row['end'] > start)
6 merged = []
7 for left, right in spans:
8 if merged and left <= merged[-1][1]:
9 merged[-1][1] = max(merged[-1][1], right)
10 else:
11 merged.append([left, right])
12 return merged