a Range class implementing compact integer ranges with a set-like API, and associated functions
Project description
A Range is an object resembling a set but optimised for contiguous ranges of int members.
Latest release 20230701: Assorted bugfixes.
Function overlap(span1, span2)
Return a list [start,end]
denoting the overlap of two spans.
Example:
>>> overlap([1,9], [5,13])
[5, 9]
Class Range
A collection of int
s that collates adjacent ints.
The interface is as for a set
with additional methods:
spans()
: return an iterable ofSpan
s, with.start
included in eachSpan
and.end
just beyond
Additionally, the update/remove/etc methods have a secondary
calling signature: (start,end)
, which is the same as passing
in Range(start,end)
but much more efficient.
Method Range.__init__(self, start=None, end=None, debug=None)
:
Initialise the Range.
Called with start
and end
, these specify the initial
Span
of the Range
.
If called with just one argument that argument instead be an iterable
of integer values comprising the values in the Range
.
Class Span(Span, builtins.tuple)
A namedtuple with .start
and .end
attributes.
Function spans(items)
Return an iterable of Spans
for all contiguous sequences in
items
.
Example:
>>> list(spans([1,2,3,7,8,11,5]))
[1:4, 7:9, 11:12, 5:6]
Release Log
Release 20230701: Assorted bugfixes.
Release 20230619:
- Span: sanity check .start and .end.
- Range.issubset: efficient comparison with another Range, also .issuperset.
Release 20230518: Span,Range: new as_list() methods.
Release 20190102: Span: provide len.
Release 20171231:
- Add Range.span0, returning the first Span.
- Implement bool and__nonzero__.
- Accept a Span in contains.
- Some small bugfixes.
Release 20160828:
- Add Range.start like existing Range.end.
- Use "install_requires" instead of "requires" in DISTINFO.
- Small bugfix.
Release 20150116: First PyPI release.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for cs.range-20230701-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 013607cfa0e3168153c02595fa8cbba364ef376d0e184bfcd8334e0143de3350 |
|
MD5 | dd2b5c16cdca7f3e0e476c16fc612a4c |
|
BLAKE2b-256 | d599c3b4892d99683458f83a744583340820428a7431883a2b7eb3d4e7edfb5f |