Portion Versions Save

portion, a Python library providing data structure and operations for intervals.

2.4.2

5 months ago

Fixes import error in create_api for Python 3.10+ (see #87)

2.4.1

10 months ago

Fix import error when using create_api outside a REPL (see #85).

2.4.0

1 year ago

Added

  • An AbstractDiscreteInterval class to ease the creation of specialized discrete intervals (experimental).
  • A create_api function to generate an API similar to the one of portion but configured to use a given subclass of Interval (experimental, see Specialize & customize intervals).

Changed

  • Speed up repr and to_string for Interval instances (see #76, adm271828).
  • Some internal changes to ease subclassing:
    • from_string and from_data accepts a klass parameter to specify which class should be used to create Interval instances (default is Interval).
    • Add a klass parameter for open, closed, openclosed, closedopen, singleton and empty (default is Interval).
    • Add a _klass class attribute in IntervalDict to specify how to create Interval instances (default is Interval).
    • IntervalDict uses self.__class__ to preserve subclasses when creating new instances.

2.3.1

1 year ago

Changed

  • Speed up lookups in IntervalDict for non-interval keys.
  • Speed up iterate by no longer creating singleton instances under the hood.
  • Drop official support for Python 3.6.

Fixed

  • Infinite recursion when a subclass of an Interval is compared using > with an Interval instance (see #75).

2.3.0

1 year ago

Added

  • Support Python 3.10.
  • IntervalDict.as_dict has an optional atomic=False parameter that, if set to True, returns intervals that are atomic.
  • Experimental support for structural pattern matching (on left, lower, upper and right).

Fixed

  • (breaking) Set list(P.empty()) == [], i.e., the empty interval is a disjunction of no interval (see #72).
  • (breaking) For consistency, the empty interval is never <, >, <=, nor >= when compared to another interval.
  • Comparing an interval and a value is deprecated since it is ill-defined when the value is on the left of <= or >=. Convert values to singletons first.

2.2.0

2 years ago

Added

Changed

  • Some internal changes to ease subclassing Interval(see #58):
    • Use self.__class__ instead of Interval to create new instances;
    • Deprecate and move mergeable function to Interval._mergeable class method;
    • Interval.from_atomic is now a class method instead of a static method.
  • Speed up lookups in IntervalDict (#65, Jeff Trull).
  • Speed up removals in IntervalDict.
  • Speed up intersection for non-overlapping intervals (#66, Jeff Trull).
  • Speed up .overlaps and .contains for non-overlapping intervals/items.

2.1.6

3 years ago

Fixed

  • from_stringraises a ValueError if given string cannot be parsed to an interval (#57).

Changed

  • Drop official support for Python 3.5.
  • Use black as official code formatting.

2.1.5

3 years ago

Fixes:

  • Getting items from an Interval using a slice does no longer return a list but an Interval instance.
  • Intervals are properly pretty-printed by pandas (#54).

2.1.4

3 years ago

Much faster get, copy and | operations for IntervalDict.

2.1.3-post1

3 years ago

Soften dependency constraint towards sortedcontainers (#47).