Skip to content

Repository files navigation

intervals

Build StatusVersion StatusDownloads

Python tools for handling intervals (ranges of comparable objects).

Interval initialization

# All integers between 1 and 4interval=Interval([1, 4])
interval.lower# 1interval.upper# 4interval.lower_inc# Trueinterval.upper_inc# True

Open, half-open and closed intervals

Intervals can be either open, half-open or closed. Properties lower_inc and upper_inc denote whether or not given endpoint is included (open) or not.

  • An open interval is an interval where both endpoints are open.
interval=Interval((1, 4))
interval.open# Trueinterval.lower_inc# Falseinterval.upper_inc# False
  • Half-open interval has one of the endpoints as open
interval=Interval('[1, 4)')
interval.open# Falseinterval.lower_inc# Trueinterval.upper_inc# False
  • Closed interval includes both endpoints
interval=Interval([1, 4])
interval.closed# Trueinterval.lower_inc# Trueinterval.upper_inc# True

Interval types

Each interval encapsulates a type. Interval is not actually a class. Its a convenient factory that generates AbstractInterval subclasses. Whenever you call Interval() the IntervalFactory tries to guess to best matching interval for given bounds.

fromdatetimeimportdateinterval=Interval([1, 4])
interval# IntInterval('[1, 4]')interval.type# intinterval=Interval([1.5, 4])
interval# FloatInterval('[1.5, 4]')interval.type# floatinterval=Interval([date(2000, 1, 1), inf])
interval# DateInterval('[2000-1-1,)')interval.type# date

You can also create interval subtypes directly (this is also faster than using Interval).

IntInterval([1, 4])
FloatInterval((1.4, 2.7))

Currently provided subtypes are:

  • IntInterval
  • FloatInterval
  • DecimalInterval
  • DateInterval
  • DateTimeInterval

Properties

  • radius gives the half-length of an interval
Interval([1, 4]).radius# 2.5
  • length gives the length of an interval.
Interval([1, 4]).length# 3
  • centre gives the centre (midpoint) of an interval
Interval([-1, 1]).centre# 0
  • Interval [a, b] is degenerate if a == b
Interval([1, 1]).degenerate# TrueInterval([1, 2]).degenerate# False

Operators

Interval([1, 5]) >Interval([0, 3]) # TrueInterval([1, 5]) ==Interval([1, 5]) # TrueInterval([2, 3]) inInterval([2, 6]) # TrueInterval([2, 3]) inInterval([2, 3]) # TrueInterval([2, 3]) inInterval((2, 3)) # False

Discrete intervals

Interval([2, 4]) ==Interval((1, 5)) # True

Arithmetics

Interval([1, 5]) +Interval([1, 8]) # Interval([2, 13])# intersectionInterval([2, 6]) &Interval([3, 8]) # Interval([3, 6])

About

Python tools for handling intervals (ranges of comparable objects).

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages