Skip to main content

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:

Metadata

Release files for multirange 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for multirange 0.3.0
File Size Uploaded Provenance
multirange-0.3.0.tar.gz 14.0 kB Without provenance Details

Release files / multirange-0.3.0.tar.gz

Download URL multirange-0.3.0.tar.gz
Size 14.0 kB
Tags Source
SHA-256 checksum
How to use checksums
4469a8a83e0c5cd03567ce2b5be1536a0165c803e9561a12a8d0ac11466db03b
BLAKE2b-256 checksum
How to use checksums
607ee1e1810fe71cd5c3eb8c991f849805e11f4c50f9d387c7f77c33a910967d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for multirange 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page