Skip to content

2.0.0 - Renamed library, large refactoring and improved performance

Compare
Choose a tag to compare
@AlexandreDecan AlexandreDecan released this 06 Mar 12:55
· 156 commits to master since this release

Added

  • i.empty to check for interval emptiness.
  • i.atomic to check for interval atomicity.
  • An adjacent method to test whether two intervals are adjacent.
  • i.__getitem__ supports slices.
  • Infinities define a hash value.
  • Static method Interval.from_atomic(left, lower, upper, right) to create an interval composed of a single atomic interval (replaces AtomicInterval(left, lower, upper, right)).

Changed

  • (breaking) python-intervals has been renamed portion.
  • (breaking) Many (optional) parameters are converted to keyword-only arguments:
    • for from_string and to_string: bound, disj, sep, left_open, left_closed, right_open, right_closed, pinf and ninf;
    • for from_data and to_data: pinf and ninf;
    • for iterate: base and reverse;
    • for Interval.replace: ignore_inf.
  • (breaking) incr is replaced by step in iterate.
  • (breaking) For consistency with range, the step parameter in iterate is always added even if reverse=True.
  • (breaking) i.enclosure is a property and no longer a method.
  • (breaking) Indexing or iterating on the atomic intervals of an Interval returns Interval instances instead of AtomicInterval ones.
  • (breaking) An interval is hashable if and only if its bounds are hashable.
  • Huge performance increase for creation, union, intersection, complement and difference of intervals (#21).
  • CLOSED and OPEN are members of the Bound enumeration.
  • Large refactoring to encapsulate AtomicInterval and all its operations in Interval.
  • Restructure package in modules instead of a flat file.
  • Reorganise tests in modules and classes instead of a flat file.
  • Reorganise changelog with explicit categories.

Removed

  • (breaking) Drop support for Python 2.7 and 3.4 since they reached end-of-life.
  • (breaking) AtomicInterval is a namedtuple and is no longer part of the public APP.
  • (breaking) Remove i.to_atomic() (use i.enclosure instead).
  • (breaking) Remove i.is_empty() (use i.empty instead).
  • (breaking) Remove i.is_atomic() (use i.atomic instead).
  • (breaking) CLOSED and OPEN do no longer define an implicit Boolean value. Use ~ instead of not to invert a bound.
  • (breaking) Remove deprecated permissive in i.overlaps.
  • (breaking) Remove adjacent in i.overlaps, use i.adjacent method instead.

Fixed

  • Fix an issue where an interval can be composed of duplicated empty intervals (#19).
  • Fix performance issues when intervals composed of hundreds of atomic intervals are complemented (#20)