Changes since 0.2.2: * __repr__ for Smallest() and Largest() now correctly returns an evaluable expression * __str__ for Interval returns values in a different form. For example, (3..6) instead of (3,6), [3...) instead of [3,~), and (...) instead of (-~,~) * Changed inf to Inf (to be more consistent with Python constants, i.e. True, None) + Added __repr__ to Interval + Added __repr__ to IntervalSet * Changed docstrings to conform more to the standard format + Added Interval.none as a method that returns an empty interval + Added __eq__ to Interval + Added __and__ to Interval * Changed less_than and greater_than to only allow one parameter + Added greater_than_or_equal_to and less_than_or_equal_to - Removed __nonzero__ from Interval (redundant) + Added __getitem__ to BaseIntervalSet + Added __iter__ to BaseIntervalSet + Added __delitem__ to IntervalSet + Added lower_bound() to BaseIntervalSet + Added upper_bound() to BaseIntervalSet + Added bounds() to BaseIntervalSet Changes since 0.2.1: * Modified BaseIntervalSet.__eq__ so that an empty set is equal to another empty set + Added BaseIntervalSet.__cmp__ that raises TypeError like set * Modified BaseIntervalSet.__invert__ so a FrozenIntervalSet is generated for a FrozenIntervalSet * Modified BaseIntervalSet.__iter__ so that point Intervals are returned as discrete values instead of as Intervals * Changed BaseIntervalSet.__add so it no longer adds a set as a special case * Changed BaseIntervalSet.__eq__ so that any type is comparable, but False is always returned for non-BaseIntervalSet types + Added BaseIntervalSet.__ne__ * Changed Interval so it can only contain hashable objects * Renamed arguments and member values of Interval.__init__ * Fixed bugs relating to FrozenIntervalSets * Modified FrozenIntervalSet.__init__ so that initializing a FrozenIntervalSet with another FrozenIntervalSet returns the initializing value. Odd... * Modified IntervalSet.pop so it pops a discrete value instead of an Interval if the Interval is a single point * Renamed greaterThan to greater_than * Renamed lessThan to less_than * Renamed notEqualTo to not_equal_to * Renamed adjacentTo to adjacent_to * Renamed comesBefore to comes_before * Renamed equalTo to equal_to Changes since 0.2.0: + Renamed Interval.__add__ to Interval.join * Changed parameter names for Interval.__init__ and added default values * Changed BaseIntervalSet.__contains__ so that it no longer does a subset test * Modified BaseIntervalSet.__issubset__ so that it only operates on other BaseIntervalSets * Modified IntervalSet.remove so that it only removes intervals, sets, or discrete values * Modified IntervalSet.update so that it operates on another BaseIntervalSet operand only * Modified IntervalSet.intersection_update so that it operates on another BaseIntervalSet operand only * Modified IntervalSet.difference_update so that it only operates with a BaseIntervalSet instance * Modified IntervalSet.symmetric_difference_update so that it uses only IntervalSets as operands * Modified add so that it no longer recursively adds IntervalSets * Modified remove so that it no longer recursively removes IntervalSets * Modified | and + so that only IntervalSet operands are used * Modified symmetric_difference so it operates on IntervalSets only * Modified union so it only operates on IntervalSets * Modified & and intersection so they only operates on IntervalSets * Modified - so it only operates on IntervalSets * Modified ^ so it only operates on IntervalSets + Added BaseIntervalSet support for len(s). It returns the number of intervals in the BaseIntervalSet. * Modified BaseIntervalSet.__init__ to take an iterable object instead of an arbitrary number of arguments * Modified union, intersection, difference, symmetric_difference, issubset, and issuperset to accept any iterable object * Modified update, intersection_update, difference_update, and symmetric_difference_update to accept any iterable object * Fixed bug where a < b and b > a returns true if a == b Changes since 0.1: * iset module was renamed to interval * ISet class was renamed to IntervalSet + Added BaseIntervalSet and FrozenIntervalSet + Added the Smallest and Largest classes + Added the constant inf * Moved ne, lt, le, gt, ge, incInterval, exInterval, and between to better-named class methods * Moved all and empty to classmethods in BaseIntervalSet - Removed eq + Added all as classmethod to Interval - Removed Interval.__cmp__ + Added Interval.comesBefore * Renamed Interval.lbound to Interval.min * Renamed Interval.linc to Interval.mininc * Renamed Interval.ubound to Interval.max * Renamed Interval.uinc to Interval.maxinc + Added __hash__ functions + Added BaseIntervalSet.__lt__ + Added BaseIntervalSet.issubset + Added BaseIntervalSet.issuperset + Added BaseIntervalSet.union + Added BaseIntervalSet.intersection + Added BaseIntervalSet.difference + Added BaseIntervalSet.symmetric_difference + Added BaseIntervalSet.copy + Added IntervalSet.update + Added IntervalSet.intersection_update + Added IntervalSet.difference_update + Added IntervalSet.symmetric_difference_update + Added IntervalSet.discard + Added IntervalSet.pop + Added IntervalSet.__iter__ + Added IntervalSet.clear * Renamed IntervalSet.append to IntervalSet.add + Added IntervalSet.remove