- `IntervalTree` now supports the full `collections.MutableSet` API
- Added:
- `__delitem__` to `IntervalTree`
- `Interval` comparison methods `lt()`, `gt()`, `le()` and `ge()` to `Interval`, as an alternative to the comparison operators, which are designed for sorting
- `IntervalTree.from_tuples(iterable)`
- `IntervalTree.clear()`
- `IntervalTree.difference(iterable)`
- `IntervalTree.difference_update(iterable)`
- `IntervalTree.union(iterable)`
- `IntervalTree.intersection(iterable)`
- `IntervalTree.intersection_update(iterable)`
- `IntervalTree.symmetric_difference(iterable)`
- `IntervalTree.symmetric_difference_update(iterable)`
- `IntervalTree.chop(a, b)`
- `IntervalTree.slice(point)`
- Deprecated `IntervalTree.extend()` -- use `update()` instead
- Internal improvements:
- More verbose tests with progress bars
- More tests for comparison and sorting behavior
- Code in the README is included in the unit tests
- Fixes
- BACKWARD INCOMPATIBLE: On ranged queries where `begin >= end`, the query operated on the overlaps of `begin`. This behavior was documented as expected in 1.x; it is now changed to be more consistent with the definition of `Interval`s, which are half-open.
- Issue 25: pruning empty Nodes with staggered descendants could result in invalid trees
- Sorting `Interval`s and numbers in the same list gathered all the numbers at the beginning and the `Interval`s at the end
- `IntervalTree.overlaps()` and friends returned `None` instead of `False`
- Maintainers: `make install-testpypi` failed because the `pip` was missing a `--pre` flag