Skip to content

Releases: AlexandreDecan/portion

Hotfix 2.4.2

06 Dec 08:32
Compare
Choose a tag to compare

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

Hotfix 2.4.1

19 Jul 07:29
Compare
Choose a tag to compare

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

Specialized and customized intervals

13 Mar 16:11
Compare
Choose a tag to compare

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 - Hotfix for #75

28 Jan 13:22
Compare
Choose a tag to compare

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

31 Aug 08:41
104cd6d
Compare
Choose a tag to compare

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 - Subclassing & speed-ups

14 Sep 07:11
Compare
Choose a tag to compare

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.

Hot fix for `from_string`

17 Apr 14:30
Compare
Choose a tag to compare

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.

Intervals in pandas & consistent slices

28 Feb 10:22
Compare
Choose a tag to compare

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).

Faster IntervalDict operations

26 Nov 09:43
Compare
Choose a tag to compare

Much faster get, copy and | operations for IntervalDict.

2.1.3-post1 (soften dependency constraint)

13 Nov 08:12
a02d6fc
Compare
Choose a tag to compare

Soften dependency constraint towards sortedcontainers (#47).