Skip to main content

Convenience functions for multiple range-like objects

Project description

Convenience functions for multiple range-like objects

An elementary package for Python >= 3.3

https://pypi.python.org/pypi/multirange/

Status

The code works, but it is not stable: functionality might be added or reorganized as long as the major version equals 0 (cf. http://semver.org/spec/v2.0.0.html, item #4). Hint: Stability grows quicker when you provide feedback.

multirange is not yet feature complete; most operations involving multiranges are missing.

Introduction

This library for Python >= 3.3 provides convenience functions for multiple range-like objects (corresponding to finite sets of consecutive integers).

It has 3 types of operations:

  • operations involving few range objects

  • operations involving an iterable of range objects (range iterable)

  • operations involving so-called multiranges; we define a multirange as an iterable of ranges, which have no mutual overlap, which are not adjacent, and which are ordered increasingly

Examples

>>> import multirange as mr
>>> mr.normalize(range(5, 0))
>>> mr.overlap(range(0, 10), range(5, 15))
range(5, 10)
>>> mr.is_disjunct([range(8, 10), range(0, 2), range(2, 4)])
True
>>> mr.covering_all([range(8, 10), range(0, 2), range(2, 4)])
range(0, 10)
>>> mr.contains(range(0, 10), range(0, 5))
True
>>> mr.is_covered_by([range(8, 10), range(0, 2)], range(0, 20))
True
>>> mr.intermediate(range(10, 15), range(0, 5))
range(5, 10)
>>> list(mr.gaps([range(4, 6), range(6, 7), range(8, 10), range(0, 3)]))
[range(3, 4), range(7, 8)]
>>> mr.difference(range(1, 9), range(2, 3))
(range(1, 2), range(3, 9))
>>> list(mr.normalize_multi([None, range(0, 5), range(5, 7), range(8, 20)]))
[range(0, 7), range(8, 20)]
>>> list(mr.difference_one_multi(range(0, 10), [range(-2, 2), range(4, 5)]))
[range(2, 4), range(5, 10)]

Please consult the unit tests for more examples.

Documentation

https://multirange.readthedocs.org

Source

https://github.com/iburadempa/multirange

See also

If multirange is not what you are searching for, you might be interested in one of these python modules:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

multirange-0.3.0.tar.gz (14.0 kB view details)

Uploaded Source

File details

Details for the file multirange-0.3.0.tar.gz.

File metadata

  • Download URL: multirange-0.3.0.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for multirange-0.3.0.tar.gz
Algorithm Hash digest
SHA256 4469a8a83e0c5cd03567ce2b5be1536a0165c803e9561a12a8d0ac11466db03b
MD5 fe8c776b104b32ce55153c7a70754ac2
BLAKE2b-256 607ee1e1810fe71cd5c3eb8c991f849805e11f4c50f9d387c7f77c33a910967d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page