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
Source
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
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4469a8a83e0c5cd03567ce2b5be1536a0165c803e9561a12a8d0ac11466db03b |
|
MD5 | fe8c776b104b32ce55153c7a70754ac2 |
|
BLAKE2b-256 | 607ee1e1810fe71cd5c3eb8c991f849805e11f4c50f9d387c7f77c33a910967d |