Rangeset is a package that allows for easy manipulation of sets of ranges. These ranges can contain any ordered elements, be they numbers, tuples, or even datetime objects.
Use either:
python setup.py install
or:
pip install rangeset
See https://github.com/axiak/py-rangeset
import rangeset
# Create a rangeset
>>> r = RangeSet(1, 3) | (5, 6)
# negate
>>> (~r) & (0, 10)
<RangeSet 0 -- 1, 3 -- 5, 6 -- 10>
# "measure" - How much distance is in the ranges, minus the gaps
>>> ((~r) & (0, 10)).measure()
7
# range - Total distance between start and end
>>> ((~r) & (0, 10)).range()
10
For more usage examples, see the doctests at https://github.com/axiak/py-rangeset/tree/master/python2/rangeset/test
It's licensed under the MIT License. Please see the license file for more: https://github.com/axiak/py-rangeset/blob/master/LICENSE