1 # Buildsheet autogenerated by ravenadm tool -- Do not edit.
3 NAMEBASE= python-intervaltree
7 SDESC[v11]= Editable interval tree data structure (3.11)
8 SDESC[v12]= Editable interval tree data structure (3.12)
9 HOMEPAGE= https://github.com/chaimleib/intervaltree
10 CONTACT= Python_Automaton[python@ironwolf.systems]
13 SITES[main]= PYPI/i/intervaltree
14 DISTFILE[1]= intervaltree-3.1.0.tar.gz:main
19 OPTIONS_AVAILABLE= PY311 PY312
20 OPTIONS_STANDARD= none
21 VOPTS[v11]= PY311=ON PY312=OFF
22 VOPTS[v12]= PY311=OFF PY312=ON
24 DISTNAME= intervaltree-3.1.0
28 [PY311].BUILDRUN_DEPENDS_ON= python-sortedcontainers:single:v11
29 [PY311].USES_ON= python:v11,sutools
31 [PY312].BUILDRUN_DEPENDS_ON= python-sortedcontainers:single:v12
32 [PY312].USES_ON= python:v12,sutools
34 [FILE:2780:descriptions/desc.single]
35 [![Build status badge][]][build status]
40 A mutable, self-balancing interval tree for Python 2 and 3. Queries may be
41 by point, by range overlap, or by range envelopment.
43 This library was designed to allow tagging text and time intervals, where
44 the intervals include the lower bound but not the upper bound.
46 **Version 3 changes!**
48 * The `search(begin, end, strict)` method no longer exists. Instead, use
51 * `overlap(begin, end)`
52 * `envelop(begin, end)`
53 * The `extend(items)` method no longer exists. Instead, use
55 * Methods like `merge_overlaps()` which took a `strict` argument
56 consistently default to `strict=True`. Before, some methods defaulted to
57 `True` and others to `False`.
63 pip install intervaltree
69 * Supports Python 2.7 and Python 3.5+ (Tested under 2.7, and 3.5 thru 3.8)
71 * blank `tree = IntervalTree()`
72 * from an iterable of `Interval` objects (`tree =
73 IntervalTree(intervals)`)
74 * from an iterable of tuples (`tree =
75 IntervalTree.from_tuples(interval_tuples)`)
78 * `tree[begin:end] = data`
79 * `tree.add(interval)`
80 * `tree.addi(begin, end, data)`
83 * `tree.remove(interval)` (raises `ValueError` if not
85 * `tree.discard(interval)` (quiet if not present)
86 * `tree.removei(begin, end, data)` (short for
87 `tree.remove(Interval(begin, end, data))`)
88 * `tree.discardi(begin, end, data)` (short for
89 `tree.discard(Interval(begin, end, data))`)
90 * `tree.remove_overlap(point)`
91 * `tree.remove_overlap(begin, end)` (removes all overlapping the
93 * `tree.remove_envelop(begin, end)` (removes all enveloped in the
98 * `tree.at(point)` (same as previous)
102 * `tree.overlap(begin, end)` (same as previous)
105 * `tree.envelop(begin, end)`
108 * `interval_obj in tree` (this is fastest, O(1))
109 * `tree.containsi(begin, end, data)`
110 * `tree.overlaps(point)`
111 * `tree.overlaps(begin, end)`
114 * `for interval_obj in tree:`
121 * `tree.begin()` (the `begin` coordinate of the leftmost
123 * `tree.end()` (the `end` coordinate of the rightmost
126 * Set-like operations
128 * `result_tree = tree.union(iterable)`
129 * `result_tree = tree1 | tree2`
130 * `tree.update(iterable)`
131 * `tree |= other_tree`
134 * `result_tree = tree.difference(iterable)`
138 902b1b88936918f9b2a19e0e5eb7ccb430ae45cde4f39ea4b36932920d33952d 32861 intervaltree-3.1.0.tar.gz