solarforecastarbiter.utils.merge_ranges

solarforecastarbiter.utils.merge_ranges(ranges)[source]

Generator to merge the ranges like (min_val, max_val) removing any overlap. Results will be sorted in ascending order. The type of values in each range set should have well defined behaviour with the comparison operators, namely >, >=, <, <=.

Parameters:

ranges (iterable) –

Yields:

next_value (same type as ranges[0])

Raises:
  • ValueError – If any range is not properly sorted
  • TypeError – If any range values cannot be compared

Examples

>>> list(merge_ranges([[0, 1], [9, 15], [-1, 3]]))
[[-1, 3], [9, 15]]
>>> list(merge_ranges([
...         (pd.Timestamp('2020-01-01T00:00Z'), pd.Timestamp('2020-01-05T12:00Z')),
...         (pd.Timestamp('2020-01-02T00:00Z'), pd.Timestamp('2020-01-03T12:00Z')),
... ]))
[(pd.Timestamp('2020-01-01T00:00Z'), pd.Timestamp('2020-01-05T12:00Z'))]