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