Repository files navigation

Tree-Mendous

PyPIPythonCILicense

Tree-Mendous provides exact half-open integer range sets: [start, end) includes start and excludes end. Choose the stable RangeSet interface for payloads, queries, and allocation; a specialized native API for atomic geometry batches; 50 process-local application engines; or explicitly experimental multidimensional indexes.

Choose an API

NeedInterfaceStatusImportant boundary
Add, discard, query, allocate, snapshot, or attach payloadsRangeSet via treemendous.create_range_setStableThe canonical general-purpose API
Apply ordered geometry mutations as one native transactiontreemendous.exact_batchStable, specializedNo payloads, allocation, or generic query API
Use a concrete scheduler, allocator, catalog, partitioner, or lease pooltreemendous.applicationsStable application namespace50 process-local engines with scenario-specific contracts
Index identity-preserving 2D–4D boxestreemendous.multidimensionalExperimentalProcess-local; not exported from the package root

The task-oriented interface guide explains these boundaries in detail.

Install

Tree-Mendous supports CPython 3.11–3.13.

python -m pip install treemendous

RangeSet quickstart

This complete example reserves unavailable edges, atomically allocates the first two-unit slot, and checks the remaining capacity:

fromtreemendousimportSpan, create_range_setranges=create_range_set((0, 24), backend="py_boundary")
ranges.discard(Span(0, 9))
ranges.discard(Span(17, 24))
booking=ranges.allocate(2, not_before=9, not_after=17)
assertbookingisnotNoneassertbooking.span==Span(9, 11)
assertranges.first_fit(2, not_before=11, not_after=17).span==Span(11, 13)
assertranges.snapshot().total_free==6

allocate returns None if no fit exists. Coordinates must be integers, lengths must be positive, and mutations must stay inside the managed domain. Payload behavior is selected with an explicit UniformPayloadPolicy, JoinPayloadPolicy, or OrderedPayloadPolicy; see the API guide.

Exact-batch quickstart

Use ExactBatchRangeSet when one ordered, geometry-only batch must either publish completely or leave the prior snapshot visible:

fromtreemendousimportSpanfromtreemendous.exact_batchimport (
BatchMutation,
ExactBatchRangeSet,
MutationOpcode,
)
ranges=ExactBatchRangeSet((0, 64), initially_available=False)
results=ranges.mutate(
[
BatchMutation(MutationOpcode.ADD, 8, 20),
BatchMutation(MutationOpcode.DISCARD_REQUIRE_COVERED, 10, 14),
]
)
assert [result.changedforresultinresults] == [
(Span(8, 20),),
(Span(10, 14),),
]
assertranges.snapshot().intervals[0].span==Span(8, 10)

Rows execute in input order. Per-instance limits bound operations, live intervals, changed spans, packed-result bytes, and staging work. Exact batch is not a RangeSet backend and is not integrated into the 50 application engines. Read the exact-batch contract.

Performance

Performance depends on workload shape, state size, backend availability, platform, and which wrapper or materialization layers are timed. Current local Apple M5 Max/macOS 26.5.1/CPython 3.12.7 standard measurements put cpp_boundary at about 0.30M–0.91M timed public operations per second across six traces with 64–128 initial intervals. This is evidence for those traces, not a universal throughput claim. Large snapshots and sorted-vector exact batches can become copy-bound.

The performance guide reports operation-level measurements, hosted 1.1.0 exact-batch evidence, timing boundaries, and the optimization roadmap. The benchmark methodology explains correctness checks and durable artifacts.

Applications and reusable patterns

The 50 concrete engines cover partitioning, scheduling, overlap catalogs, allocation, and numeric leasing. Each has its own factory, state model, and exclusions; names describing distributed work do not imply transport, consensus, or durable storage. Start with the application index or the application-pattern guide.

Two additional executable patterns demonstrate APIs outside the 50-engine registry:

The registered radio-spectrum engine is the existing generic BoxIndex integration: it wraps an experimental BoxIndex(2) inside its stable, application-specific reservation contract. The Morton catalog instead uses one-dimensional Morton candidate bands plus exact Cartesian filtering. The new BoxIndex3D pattern is outside the registry, and exact batch is not integrated into any of the 50 engines.

Backend maturity

Automatic selection considers only stable backends that are available, pass semantic probes, and satisfy requested capabilities. Selecting an unavailable or invalid backend raises a reasoned error.

Backend IDRuntimeWidthMaturityNotes
py_boundaryPython/CPU64-bitStableCore geometry
py_avl_earliestPython/CPU64-bitStableCore geometry
py_summaryPython/CPU64-bitStableBest-fit + analytics
py_treapPython/CPU64-bitStableRandom interval sampling
py_boundary_summaryPython/CPU64-bitStableBest-fit + analytics
cpp_boundaryC++/CPU64-bitStable when builtCore geometry
cpp_treapC++/CPU32-bitExperimentalNot selectable
cpp_boundary_summaryC++/CPU32-bitExperimentalNot selectable
cpp_boundary_summary_optimizedC++/CPU32-bitExperimentalNot selectable
gpu_boundary_summaryCUDA/GPU32-bitExperimentalNot selectable
metal_boundary_summaryMetal/GPU32-bitExperimentalNot selectable

See the backend catalog for discovery and qualification details.

Documentation

Development

git clone https://github.com/josephjohncox/TreeMendous.git
cd TreeMendous
uv sync --all-extras
just check
just run-examples

Use just build for locally verified wheel and source artifacts. See Contributing and Releasing for the complete quality and publication contracts.

BSD-3-Clause license.

About

Exact integer range sets with Python/C++ backends, atomic native batches, experimental multidimensional indexes, and 50 application engines.

Topics

Resources

Contributing

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Tree-Mendous

PyPIPythonCILicense

Tree-Mendous provides exact half-open integer range sets: [start, end) includes start and excludes end. Choose the stable RangeSet interface for payloads, queries, and allocation; a specialized native API for atomic geometry batches; 50 process-local application engines; or explicitly experimental multidimensional indexes.

Choose an API

NeedInterfaceStatusImportant boundary
Add, discard, query, allocate, snapshot, or attach payloadsRangeSet via treemendous.create_range_setStableThe canonical general-purpose API
Apply ordered geometry mutations as one native transactiontreemendous.exact_batchStable, specializedNo payloads, allocation, or generic query API
Use a concrete scheduler, allocator, catalog, partitioner, or lease pooltreemendous.applicationsStable application namespace50 process-local engines with scenario-specific contracts
Index identity-preserving 2D–4D boxestreemendous.multidimensionalExperimentalProcess-local; not exported from the package root

The task-oriented interface guide explains these boundaries in detail.

Install

Tree-Mendous supports CPython 3.11–3.13.

python -m pip install treemendous

RangeSet quickstart

This complete example reserves unavailable edges, atomically allocates the first two-unit slot, and checks the remaining capacity:

fromtreemendousimportSpan, create_range_setranges=create_range_set((0, 24), backend="py_boundary")
ranges.discard(Span(0, 9))
ranges.discard(Span(17, 24))
booking=ranges.allocate(2, not_before=9, not_after=17)
assertbookingisnotNoneassertbooking.span==Span(9, 11)
assertranges.first_fit(2, not_before=11, not_after=17).span==Span(11, 13)
assertranges.snapshot().total_free==6

allocate returns None if no fit exists. Coordinates must be integers, lengths must be positive, and mutations must stay inside the managed domain. Payload behavior is selected with an explicit UniformPayloadPolicy, JoinPayloadPolicy, or OrderedPayloadPolicy; see the API guide.

Exact-batch quickstart

Use ExactBatchRangeSet when one ordered, geometry-only batch must either publish completely or leave the prior snapshot visible:

fromtreemendousimportSpanfromtreemendous.exact_batchimport (
BatchMutation,
ExactBatchRangeSet,
MutationOpcode,
)
ranges=ExactBatchRangeSet((0, 64), initially_available=False)
results=ranges.mutate(
[
BatchMutation(MutationOpcode.ADD, 8, 20),
BatchMutation(MutationOpcode.DISCARD_REQUIRE_COVERED, 10, 14),
]
)
assert [result.changedforresultinresults] == [
(Span(8, 20),),
(Span(10, 14),),
]
assertranges.snapshot().intervals[0].span==Span(8, 10)

Rows execute in input order. Per-instance limits bound operations, live intervals, changed spans, packed-result bytes, and staging work. Exact batch is not a RangeSet backend and is not integrated into the 50 application engines. Read the exact-batch contract.

Performance

Performance depends on workload shape, state size, backend availability, platform, and which wrapper or materialization layers are timed. Current local Apple M5 Max/macOS 26.5.1/CPython 3.12.7 standard measurements put cpp_boundary at about 0.30M–0.91M timed public operations per second across six traces with 64–128 initial intervals. This is evidence for those traces, not a universal throughput claim. Large snapshots and sorted-vector exact batches can become copy-bound.

The performance guide reports operation-level measurements, hosted 1.1.0 exact-batch evidence, timing boundaries, and the optimization roadmap. The benchmark methodology explains correctness checks and durable artifacts.

Applications and reusable patterns

The 50 concrete engines cover partitioning, scheduling, overlap catalogs, allocation, and numeric leasing. Each has its own factory, state model, and exclusions; names describing distributed work do not imply transport, consensus, or durable storage. Start with the application index or the application-pattern guide.

Two additional executable patterns demonstrate APIs outside the 50-engine registry:

The registered radio-spectrum engine is the existing generic BoxIndex integration: it wraps an experimental BoxIndex(2) inside its stable, application-specific reservation contract. The Morton catalog instead uses one-dimensional Morton candidate bands plus exact Cartesian filtering. The new BoxIndex3D pattern is outside the registry, and exact batch is not integrated into any of the 50 engines.

Backend maturity

Automatic selection considers only stable backends that are available, pass semantic probes, and satisfy requested capabilities. Selecting an unavailable or invalid backend raises a reasoned error.

Backend IDRuntimeWidthMaturityNotes
py_boundaryPython/CPU64-bitStableCore geometry
py_avl_earliestPython/CPU64-bitStableCore geometry
py_summaryPython/CPU64-bitStableBest-fit + analytics
py_treapPython/CPU64-bitStableRandom interval sampling
py_boundary_summaryPython/CPU64-bitStableBest-fit + analytics
cpp_boundaryC++/CPU64-bitStable when builtCore geometry
cpp_treapC++/CPU32-bitExperimentalNot selectable
cpp_boundary_summaryC++/CPU32-bitExperimentalNot selectable
cpp_boundary_summary_optimizedC++/CPU32-bitExperimentalNot selectable
gpu_boundary_summaryCUDA/GPU32-bitExperimentalNot selectable
metal_boundary_summaryMetal/GPU32-bitExperimentalNot selectable

See the backend catalog for discovery and qualification details.

Documentation

Development

git clone https://github.com/josephjohncox/TreeMendous.git
cd TreeMendous
uv sync --all-extras
just check
just run-examples

Use just build for locally verified wheel and source artifacts. See Contributing and Releasing for the complete quality and publication contracts.

BSD-3-Clause license.

About

Exact integer range sets with Python/C++ backends, atomic native batches, experimental multidimensional indexes, and 50 application engines.

Topics

Resources

Contributing

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Tree-Mendous

PyPIPythonCILicense

Tree-Mendous provides exact half-open integer range sets: [start, end) includes start and excludes end. Choose the stable RangeSet interface for payloads, queries, and allocation; a specialized native API for atomic geometry batches; 50 process-local application engines; or explicitly experimental multidimensional indexes.

Choose an API

NeedInterfaceStatusImportant boundary
Add, discard, query, allocate, snapshot, or attach payloadsRangeSet via treemendous.create_range_setStableThe canonical general-purpose API
Apply ordered geometry mutations as one native transactiontreemendous.exact_batchStable, specializedNo payloads, allocation, or generic query API
Use a concrete scheduler, allocator, catalog, partitioner, or lease pooltreemendous.applicationsStable application namespace50 process-local engines with scenario-specific contracts
Index identity-preserving 2D–4D boxestreemendous.multidimensionalExperimentalProcess-local; not exported from the package root

The task-oriented interface guide explains these boundaries in detail.

Install

Tree-Mendous supports CPython 3.11–3.13.

python -m pip install treemendous

RangeSet quickstart

This complete example reserves unavailable edges, atomically allocates the first two-unit slot, and checks the remaining capacity:

fromtreemendousimportSpan, create_range_setranges=create_range_set((0, 24), backend="py_boundary")
ranges.discard(Span(0, 9))
ranges.discard(Span(17, 24))
booking=ranges.allocate(2, not_before=9, not_after=17)
assertbookingisnotNoneassertbooking.span==Span(9, 11)
assertranges.first_fit(2, not_before=11, not_after=17).span==Span(11, 13)
assertranges.snapshot().total_free==6

allocate returns None if no fit exists. Coordinates must be integers, lengths must be positive, and mutations must stay inside the managed domain. Payload behavior is selected with an explicit UniformPayloadPolicy, JoinPayloadPolicy, or OrderedPayloadPolicy; see the API guide.

Exact-batch quickstart

Use ExactBatchRangeSet when one ordered, geometry-only batch must either publish completely or leave the prior snapshot visible:

fromtreemendousimportSpanfromtreemendous.exact_batchimport (
BatchMutation,
ExactBatchRangeSet,
MutationOpcode,
)
ranges=ExactBatchRangeSet((0, 64), initially_available=False)
results=ranges.mutate(
[
BatchMutation(MutationOpcode.ADD, 8, 20),
BatchMutation(MutationOpcode.DISCARD_REQUIRE_COVERED, 10, 14),
]
)
assert [result.changedforresultinresults] == [
(Span(8, 20),),
(Span(10, 14),),
]
assertranges.snapshot().intervals[0].span==Span(8, 10)

Rows execute in input order. Per-instance limits bound operations, live intervals, changed spans, packed-result bytes, and staging work. Exact batch is not a RangeSet backend and is not integrated into the 50 application engines. Read the exact-batch contract.

Performance

Performance depends on workload shape, state size, backend availability, platform, and which wrapper or materialization layers are timed. Current local Apple M5 Max/macOS 26.5.1/CPython 3.12.7 standard measurements put cpp_boundary at about 0.30M–0.91M timed public operations per second across six traces with 64–128 initial intervals. This is evidence for those traces, not a universal throughput claim. Large snapshots and sorted-vector exact batches can become copy-bound.

The performance guide reports operation-level measurements, hosted 1.1.0 exact-batch evidence, timing boundaries, and the optimization roadmap. The benchmark methodology explains correctness checks and durable artifacts.

Applications and reusable patterns

The 50 concrete engines cover partitioning, scheduling, overlap catalogs, allocation, and numeric leasing. Each has its own factory, state model, and exclusions; names describing distributed work do not imply transport, consensus, or durable storage. Start with the application index or the application-pattern guide.

Two additional executable patterns demonstrate APIs outside the 50-engine registry:

The registered radio-spectrum engine is the existing generic BoxIndex integration: it wraps an experimental BoxIndex(2) inside its stable, application-specific reservation contract. The Morton catalog instead uses one-dimensional Morton candidate bands plus exact Cartesian filtering. The new BoxIndex3D pattern is outside the registry, and exact batch is not integrated into any of the 50 engines.

Backend maturity

Automatic selection considers only stable backends that are available, pass semantic probes, and satisfy requested capabilities. Selecting an unavailable or invalid backend raises a reasoned error.

Backend IDRuntimeWidthMaturityNotes
py_boundaryPython/CPU64-bitStableCore geometry
py_avl_earliestPython/CPU64-bitStableCore geometry
py_summaryPython/CPU64-bitStableBest-fit + analytics
py_treapPython/CPU64-bitStableRandom interval sampling
py_boundary_summaryPython/CPU64-bitStableBest-fit + analytics
cpp_boundaryC++/CPU64-bitStable when builtCore geometry
cpp_treapC++/CPU32-bitExperimentalNot selectable
cpp_boundary_summaryC++/CPU32-bitExperimentalNot selectable
cpp_boundary_summary_optimizedC++/CPU32-bitExperimentalNot selectable
gpu_boundary_summaryCUDA/GPU32-bitExperimentalNot selectable
metal_boundary_summaryMetal/GPU32-bitExperimentalNot selectable

See the backend catalog for discovery and qualification details.

Documentation

Development

git clone https://github.com/josephjohncox/TreeMendous.git
cd TreeMendous
uv sync --all-extras
just check
just run-examples

Use just build for locally verified wheel and source artifacts. See Contributing and Releasing for the complete quality and publication contracts.

BSD-3-Clause license.

About

Exact integer range sets with Python/C++ backends, atomic native batches, experimental multidimensional indexes, and 50 application engines.

Topics

Resources

Contributing

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Tree-Mendous

PyPIPythonCILicense

Tree-Mendous provides exact half-open integer range sets: [start, end) includes start and excludes end. Choose the stable RangeSet interface for payloads, queries, and allocation; a specialized native API for atomic geometry batches; 50 process-local application engines; or explicitly experimental multidimensional indexes.

Choose an API

NeedInterfaceStatusImportant boundary
Add, discard, query, allocate, snapshot, or attach payloadsRangeSet via treemendous.create_range_setStableThe canonical general-purpose API
Apply ordered geometry mutations as one native transactiontreemendous.exact_batchStable, specializedNo payloads, allocation, or generic query API
Use a concrete scheduler, allocator, catalog, partitioner, or lease pooltreemendous.applicationsStable application namespace50 process-local engines with scenario-specific contracts
Index identity-preserving 2D–4D boxestreemendous.multidimensionalExperimentalProcess-local; not exported from the package root

The task-oriented interface guide explains these boundaries in detail.

Install

Tree-Mendous supports CPython 3.11–3.13.

python -m pip install treemendous

RangeSet quickstart

This complete example reserves unavailable edges, atomically allocates the first two-unit slot, and checks the remaining capacity:

fromtreemendousimportSpan, create_range_setranges=create_range_set((0, 24), backend="py_boundary")
ranges.discard(Span(0, 9))
ranges.discard(Span(17, 24))
booking=ranges.allocate(2, not_before=9, not_after=17)
assertbookingisnotNoneassertbooking.span==Span(9, 11)
assertranges.first_fit(2, not_before=11, not_after=17).span==Span(11, 13)
assertranges.snapshot().total_free==6

allocate returns None if no fit exists. Coordinates must be integers, lengths must be positive, and mutations must stay inside the managed domain. Payload behavior is selected with an explicit UniformPayloadPolicy, JoinPayloadPolicy, or OrderedPayloadPolicy; see the API guide.

Exact-batch quickstart

Use ExactBatchRangeSet when one ordered, geometry-only batch must either publish completely or leave the prior snapshot visible:

fromtreemendousimportSpanfromtreemendous.exact_batchimport (
BatchMutation,
ExactBatchRangeSet,
MutationOpcode,
)
ranges=ExactBatchRangeSet((0, 64), initially_available=False)
results=ranges.mutate(
[
BatchMutation(MutationOpcode.ADD, 8, 20),
BatchMutation(MutationOpcode.DISCARD_REQUIRE_COVERED, 10, 14),
]
)
assert [result.changedforresultinresults] == [
(Span(8, 20),),
(Span(10, 14),),
]
assertranges.snapshot().intervals[0].span==Span(8, 10)

Rows execute in input order. Per-instance limits bound operations, live intervals, changed spans, packed-result bytes, and staging work. Exact batch is not a RangeSet backend and is not integrated into the 50 application engines. Read the exact-batch contract.

Performance

Performance depends on workload shape, state size, backend availability, platform, and which wrapper or materialization layers are timed. Current local Apple M5 Max/macOS 26.5.1/CPython 3.12.7 standard measurements put cpp_boundary at about 0.30M–0.91M timed public operations per second across six traces with 64–128 initial intervals. This is evidence for those traces, not a universal throughput claim. Large snapshots and sorted-vector exact batches can become copy-bound.

The performance guide reports operation-level measurements, hosted 1.1.0 exact-batch evidence, timing boundaries, and the optimization roadmap. The benchmark methodology explains correctness checks and durable artifacts.

Applications and reusable patterns

The 50 concrete engines cover partitioning, scheduling, overlap catalogs, allocation, and numeric leasing. Each has its own factory, state model, and exclusions; names describing distributed work do not imply transport, consensus, or durable storage. Start with the application index or the application-pattern guide.

Two additional executable patterns demonstrate APIs outside the 50-engine registry:

The registered radio-spectrum engine is the existing generic BoxIndex integration: it wraps an experimental BoxIndex(2) inside its stable, application-specific reservation contract. The Morton catalog instead uses one-dimensional Morton candidate bands plus exact Cartesian filtering. The new BoxIndex3D pattern is outside the registry, and exact batch is not integrated into any of the 50 engines.

Backend maturity

Automatic selection considers only stable backends that are available, pass semantic probes, and satisfy requested capabilities. Selecting an unavailable or invalid backend raises a reasoned error.

Backend IDRuntimeWidthMaturityNotes
py_boundaryPython/CPU64-bitStableCore geometry
py_avl_earliestPython/CPU64-bitStableCore geometry
py_summaryPython/CPU64-bitStableBest-fit + analytics
py_treapPython/CPU64-bitStableRandom interval sampling
py_boundary_summaryPython/CPU64-bitStableBest-fit + analytics
cpp_boundaryC++/CPU64-bitStable when builtCore geometry
cpp_treapC++/CPU32-bitExperimentalNot selectable
cpp_boundary_summaryC++/CPU32-bitExperimentalNot selectable
cpp_boundary_summary_optimizedC++/CPU32-bitExperimentalNot selectable
gpu_boundary_summaryCUDA/GPU32-bitExperimentalNot selectable
metal_boundary_summaryMetal/GPU32-bitExperimentalNot selectable

See the backend catalog for discovery and qualification details.

Documentation

Development

git clone https://github.com/josephjohncox/TreeMendous.git
cd TreeMendous
uv sync --all-extras
just check
just run-examples

Use just build for locally verified wheel and source artifacts. See Contributing and Releasing for the complete quality and publication contracts.

BSD-3-Clause license.

About

Exact integer range sets with Python/C++ backends, atomic native batches, experimental multidimensional indexes, and 50 application engines.

Topics

Resources

Contributing

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Tree-Mendous

PyPIPythonCILicense

Tree-Mendous provides exact half-open integer range sets: [start, end) includes start and excludes end. Choose the stable RangeSet interface for payloads, queries, and allocation; a specialized native API for atomic geometry batches; 50 process-local application engines; or explicitly experimental multidimensional indexes.

Choose an API

NeedInterfaceStatusImportant boundary
Add, discard, query, allocate, snapshot, or attach payloadsRangeSet via treemendous.create_range_setStableThe canonical general-purpose API
Apply ordered geometry mutations as one native transactiontreemendous.exact_batchStable, specializedNo payloads, allocation, or generic query API
Use a concrete scheduler, allocator, catalog, partitioner, or lease pooltreemendous.applicationsStable application namespace50 process-local engines with scenario-specific contracts
Index identity-preserving 2D–4D boxestreemendous.multidimensionalExperimentalProcess-local; not exported from the package root

The task-oriented interface guide explains these boundaries in detail.

Install

Tree-Mendous supports CPython 3.11–3.13.

python -m pip install treemendous

RangeSet quickstart

This complete example reserves unavailable edges, atomically allocates the first two-unit slot, and checks the remaining capacity:

fromtreemendousimportSpan, create_range_setranges=create_range_set((0, 24), backend="py_boundary")
ranges.discard(Span(0, 9))
ranges.discard(Span(17, 24))
booking=ranges.allocate(2, not_before=9, not_after=17)
assertbookingisnotNoneassertbooking.span==Span(9, 11)
assertranges.first_fit(2, not_before=11, not_after=17).span==Span(11, 13)
assertranges.snapshot().total_free==6

allocate returns None if no fit exists. Coordinates must be integers, lengths must be positive, and mutations must stay inside the managed domain. Payload behavior is selected with an explicit UniformPayloadPolicy, JoinPayloadPolicy, or OrderedPayloadPolicy; see the API guide.

Exact-batch quickstart

Use ExactBatchRangeSet when one ordered, geometry-only batch must either publish completely or leave the prior snapshot visible:

fromtreemendousimportSpanfromtreemendous.exact_batchimport (
BatchMutation,
ExactBatchRangeSet,
MutationOpcode,
)
ranges=ExactBatchRangeSet((0, 64), initially_available=False)
results=ranges.mutate(
[
BatchMutation(MutationOpcode.ADD, 8, 20),
BatchMutation(MutationOpcode.DISCARD_REQUIRE_COVERED, 10, 14),
]
)
assert [result.changedforresultinresults] == [
(Span(8, 20),),
(Span(10, 14),),
]
assertranges.snapshot().intervals[0].span==Span(8, 10)

Rows execute in input order. Per-instance limits bound operations, live intervals, changed spans, packed-result bytes, and staging work. Exact batch is not a RangeSet backend and is not integrated into the 50 application engines. Read the exact-batch contract.

Performance

Performance depends on workload shape, state size, backend availability, platform, and which wrapper or materialization layers are timed. Current local Apple M5 Max/macOS 26.5.1/CPython 3.12.7 standard measurements put cpp_boundary at about 0.30M–0.91M timed public operations per second across six traces with 64–128 initial intervals. This is evidence for those traces, not a universal throughput claim. Large snapshots and sorted-vector exact batches can become copy-bound.

The performance guide reports operation-level measurements, hosted 1.1.0 exact-batch evidence, timing boundaries, and the optimization roadmap. The benchmark methodology explains correctness checks and durable artifacts.

Applications and reusable patterns

The 50 concrete engines cover partitioning, scheduling, overlap catalogs, allocation, and numeric leasing. Each has its own factory, state model, and exclusions; names describing distributed work do not imply transport, consensus, or durable storage. Start with the application index or the application-pattern guide.

Two additional executable patterns demonstrate APIs outside the 50-engine registry:

The registered radio-spectrum engine is the existing generic BoxIndex integration: it wraps an experimental BoxIndex(2) inside its stable, application-specific reservation contract. The Morton catalog instead uses one-dimensional Morton candidate bands plus exact Cartesian filtering. The new BoxIndex3D pattern is outside the registry, and exact batch is not integrated into any of the 50 engines.

Backend maturity

Automatic selection considers only stable backends that are available, pass semantic probes, and satisfy requested capabilities. Selecting an unavailable or invalid backend raises a reasoned error.

Backend IDRuntimeWidthMaturityNotes
py_boundaryPython/CPU64-bitStableCore geometry
py_avl_earliestPython/CPU64-bitStableCore geometry
py_summaryPython/CPU64-bitStableBest-fit + analytics
py_treapPython/CPU64-bitStableRandom interval sampling
py_boundary_summaryPython/CPU64-bitStableBest-fit + analytics
cpp_boundaryC++/CPU64-bitStable when builtCore geometry
cpp_treapC++/CPU32-bitExperimentalNot selectable
cpp_boundary_summaryC++/CPU32-bitExperimentalNot selectable
cpp_boundary_summary_optimizedC++/CPU32-bitExperimentalNot selectable
gpu_boundary_summaryCUDA/GPU32-bitExperimentalNot selectable
metal_boundary_summaryMetal/GPU32-bitExperimentalNot selectable

See the backend catalog for discovery and qualification details.

Documentation

Development

git clone https://github.com/josephjohncox/TreeMendous.git
cd TreeMendous
uv sync --all-extras
just check
just run-examples

Use just build for locally verified wheel and source artifacts. See Contributing and Releasing for the complete quality and publication contracts.

BSD-3-Clause license.

About

Exact integer range sets with Python/C++ backends, atomic native batches, experimental multidimensional indexes, and 50 application engines.

Topics

Resources

Contributing

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Tree-Mendous

PyPIPythonCILicense

Tree-Mendous provides exact half-open integer range sets: [start, end) includes start and excludes end. Choose the stable RangeSet interface for payloads, queries, and allocation; a specialized native API for atomic geometry batches; 50 process-local application engines; or explicitly experimental multidimensional indexes.

Choose an API

NeedInterfaceStatusImportant boundary
Add, discard, query, allocate, snapshot, or attach payloadsRangeSet via treemendous.create_range_setStableThe canonical general-purpose API
Apply ordered geometry mutations as one native transactiontreemendous.exact_batchStable, specializedNo payloads, allocation, or generic query API
Use a concrete scheduler, allocator, catalog, partitioner, or lease pooltreemendous.applicationsStable application namespace50 process-local engines with scenario-specific contracts
Index identity-preserving 2D–4D boxestreemendous.multidimensionalExperimentalProcess-local; not exported from the package root

The task-oriented interface guide explains these boundaries in detail.

Install

Tree-Mendous supports CPython 3.11–3.13.

python -m pip install treemendous

RangeSet quickstart

This complete example reserves unavailable edges, atomically allocates the first two-unit slot, and checks the remaining capacity:

fromtreemendousimportSpan, create_range_setranges=create_range_set((0, 24), backend="py_boundary")
ranges.discard(Span(0, 9))
ranges.discard(Span(17, 24))
booking=ranges.allocate(2, not_before=9, not_after=17)
assertbookingisnotNoneassertbooking.span==Span(9, 11)
assertranges.first_fit(2, not_before=11, not_after=17).span==Span(11, 13)
assertranges.snapshot().total_free==6

allocate returns None if no fit exists. Coordinates must be integers, lengths must be positive, and mutations must stay inside the managed domain. Payload behavior is selected with an explicit UniformPayloadPolicy, JoinPayloadPolicy, or OrderedPayloadPolicy; see the API guide.

Exact-batch quickstart

Use ExactBatchRangeSet when one ordered, geometry-only batch must either publish completely or leave the prior snapshot visible:

fromtreemendousimportSpanfromtreemendous.exact_batchimport (
BatchMutation,
ExactBatchRangeSet,
MutationOpcode,
)
ranges=ExactBatchRangeSet((0, 64), initially_available=False)
results=ranges.mutate(
[
BatchMutation(MutationOpcode.ADD, 8, 20),
BatchMutation(MutationOpcode.DISCARD_REQUIRE_COVERED, 10, 14),
]
)
assert [result.changedforresultinresults] == [
(Span(8, 20),),
(Span(10, 14),),
]
assertranges.snapshot().intervals[0].span==Span(8, 10)

Rows execute in input order. Per-instance limits bound operations, live intervals, changed spans, packed-result bytes, and staging work. Exact batch is not a RangeSet backend and is not integrated into the 50 application engines. Read the exact-batch contract.

Performance

Performance depends on workload shape, state size, backend availability, platform, and which wrapper or materialization layers are timed. Current local Apple M5 Max/macOS 26.5.1/CPython 3.12.7 standard measurements put cpp_boundary at about 0.30M–0.91M timed public operations per second across six traces with 64–128 initial intervals. This is evidence for those traces, not a universal throughput claim. Large snapshots and sorted-vector exact batches can become copy-bound.

The performance guide reports operation-level measurements, hosted 1.1.0 exact-batch evidence, timing boundaries, and the optimization roadmap. The benchmark methodology explains correctness checks and durable artifacts.

Applications and reusable patterns

The 50 concrete engines cover partitioning, scheduling, overlap catalogs, allocation, and numeric leasing. Each has its own factory, state model, and exclusions; names describing distributed work do not imply transport, consensus, or durable storage. Start with the application index or the application-pattern guide.

Two additional executable patterns demonstrate APIs outside the 50-engine registry:

The registered radio-spectrum engine is the existing generic BoxIndex integration: it wraps an experimental BoxIndex(2) inside its stable, application-specific reservation contract. The Morton catalog instead uses one-dimensional Morton candidate bands plus exact Cartesian filtering. The new BoxIndex3D pattern is outside the registry, and exact batch is not integrated into any of the 50 engines.

Backend maturity

Automatic selection considers only stable backends that are available, pass semantic probes, and satisfy requested capabilities. Selecting an unavailable or invalid backend raises a reasoned error.

Backend IDRuntimeWidthMaturityNotes
py_boundaryPython/CPU64-bitStableCore geometry
py_avl_earliestPython/CPU64-bitStableCore geometry
py_summaryPython/CPU64-bitStableBest-fit + analytics
py_treapPython/CPU64-bitStableRandom interval sampling
py_boundary_summaryPython/CPU64-bitStableBest-fit + analytics
cpp_boundaryC++/CPU64-bitStable when builtCore geometry
cpp_treapC++/CPU32-bitExperimentalNot selectable
cpp_boundary_summaryC++/CPU32-bitExperimentalNot selectable
cpp_boundary_summary_optimizedC++/CPU32-bitExperimentalNot selectable
gpu_boundary_summaryCUDA/GPU32-bitExperimentalNot selectable
metal_boundary_summaryMetal/GPU32-bitExperimentalNot selectable

See the backend catalog for discovery and qualification details.

Documentation

Development

git clone https://github.com/josephjohncox/TreeMendous.git
cd TreeMendous
uv sync --all-extras
just check
just run-examples

Use just build for locally verified wheel and source artifacts. See Contributing and Releasing for the complete quality and publication contracts.

BSD-3-Clause license.

About

Exact integer range sets with Python/C++ backends, atomic native batches, experimental multidimensional indexes, and 50 application engines.

Topics

Resources

Contributing

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Tree-Mendous

PyPIPythonCILicense

Tree-Mendous provides exact half-open integer range sets: [start, end) includes start and excludes end. Choose the stable RangeSet interface for payloads, queries, and allocation; a specialized native API for atomic geometry batches; 50 process-local application engines; or explicitly experimental multidimensional indexes.

Choose an API

NeedInterfaceStatusImportant boundary
Add, discard, query, allocate, snapshot, or attach payloadsRangeSet via treemendous.create_range_setStableThe canonical general-purpose API
Apply ordered geometry mutations as one native transactiontreemendous.exact_batchStable, specializedNo payloads, allocation, or generic query API
Use a concrete scheduler, allocator, catalog, partitioner, or lease pooltreemendous.applicationsStable application namespace50 process-local engines with scenario-specific contracts
Index identity-preserving 2D–4D boxestreemendous.multidimensionalExperimentalProcess-local; not exported from the package root

The task-oriented interface guide explains these boundaries in detail.

Install

Tree-Mendous supports CPython 3.11–3.13.

python -m pip install treemendous

RangeSet quickstart

This complete example reserves unavailable edges, atomically allocates the first two-unit slot, and checks the remaining capacity:

fromtreemendousimportSpan, create_range_setranges=create_range_set((0, 24), backend="py_boundary")
ranges.discard(Span(0, 9))
ranges.discard(Span(17, 24))
booking=ranges.allocate(2, not_before=9, not_after=17)
assertbookingisnotNoneassertbooking.span==Span(9, 11)
assertranges.first_fit(2, not_before=11, not_after=17).span==Span(11, 13)
assertranges.snapshot().total_free==6

allocate returns None if no fit exists. Coordinates must be integers, lengths must be positive, and mutations must stay inside the managed domain. Payload behavior is selected with an explicit UniformPayloadPolicy, JoinPayloadPolicy, or OrderedPayloadPolicy; see the API guide.

Exact-batch quickstart

Use ExactBatchRangeSet when one ordered, geometry-only batch must either publish completely or leave the prior snapshot visible:

fromtreemendousimportSpanfromtreemendous.exact_batchimport (
BatchMutation,
ExactBatchRangeSet,
MutationOpcode,
)
ranges=ExactBatchRangeSet((0, 64), initially_available=False)
results=ranges.mutate(
[
BatchMutation(MutationOpcode.ADD, 8, 20),
BatchMutation(MutationOpcode.DISCARD_REQUIRE_COVERED, 10, 14),
]
)
assert [result.changedforresultinresults] == [
(Span(8, 20),),
(Span(10, 14),),
]
assertranges.snapshot().intervals[0].span==Span(8, 10)

Rows execute in input order. Per-instance limits bound operations, live intervals, changed spans, packed-result bytes, and staging work. Exact batch is not a RangeSet backend and is not integrated into the 50 application engines. Read the exact-batch contract.

Performance

Performance depends on workload shape, state size, backend availability, platform, and which wrapper or materialization layers are timed. Current local Apple M5 Max/macOS 26.5.1/CPython 3.12.7 standard measurements put cpp_boundary at about 0.30M–0.91M timed public operations per second across six traces with 64–128 initial intervals. This is evidence for those traces, not a universal throughput claim. Large snapshots and sorted-vector exact batches can become copy-bound.

The performance guide reports operation-level measurements, hosted 1.1.0 exact-batch evidence, timing boundaries, and the optimization roadmap. The benchmark methodology explains correctness checks and durable artifacts.

Applications and reusable patterns

The 50 concrete engines cover partitioning, scheduling, overlap catalogs, allocation, and numeric leasing. Each has its own factory, state model, and exclusions; names describing distributed work do not imply transport, consensus, or durable storage. Start with the application index or the application-pattern guide.

Two additional executable patterns demonstrate APIs outside the 50-engine registry:

The registered radio-spectrum engine is the existing generic BoxIndex integration: it wraps an experimental BoxIndex(2) inside its stable, application-specific reservation contract. The Morton catalog instead uses one-dimensional Morton candidate bands plus exact Cartesian filtering. The new BoxIndex3D pattern is outside the registry, and exact batch is not integrated into any of the 50 engines.

Backend maturity

Automatic selection considers only stable backends that are available, pass semantic probes, and satisfy requested capabilities. Selecting an unavailable or invalid backend raises a reasoned error.

Backend IDRuntimeWidthMaturityNotes
py_boundaryPython/CPU64-bitStableCore geometry
py_avl_earliestPython/CPU64-bitStableCore geometry
py_summaryPython/CPU64-bitStableBest-fit + analytics
py_treapPython/CPU64-bitStableRandom interval sampling
py_boundary_summaryPython/CPU64-bitStableBest-fit + analytics
cpp_boundaryC++/CPU64-bitStable when builtCore geometry
cpp_treapC++/CPU32-bitExperimentalNot selectable
cpp_boundary_summaryC++/CPU32-bitExperimentalNot selectable
cpp_boundary_summary_optimizedC++/CPU32-bitExperimentalNot selectable
gpu_boundary_summaryCUDA/GPU32-bitExperimentalNot selectable
metal_boundary_summaryMetal/GPU32-bitExperimentalNot selectable

See the backend catalog for discovery and qualification details.

Documentation

Development

git clone https://github.com/josephjohncox/TreeMendous.git
cd TreeMendous
uv sync --all-extras
just check
just run-examples

Use just build for locally verified wheel and source artifacts. See Contributing and Releasing for the complete quality and publication contracts.

BSD-3-Clause license.

About

Exact integer range sets with Python/C++ backends, atomic native batches, experimental multidimensional indexes, and 50 application engines.

Topics

Resources

Contributing

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Tree-Mendous

PyPIPythonCILicense

Tree-Mendous provides exact half-open integer range sets: [start, end) includes start and excludes end. Choose the stable RangeSet interface for payloads, queries, and allocation; a specialized native API for atomic geometry batches; 50 process-local application engines; or explicitly experimental multidimensional indexes.

Choose an API

NeedInterfaceStatusImportant boundary
Add, discard, query, allocate, snapshot, or attach payloadsRangeSet via treemendous.create_range_setStableThe canonical general-purpose API
Apply ordered geometry mutations as one native transactiontreemendous.exact_batchStable, specializedNo payloads, allocation, or generic query API
Use a concrete scheduler, allocator, catalog, partitioner, or lease pooltreemendous.applicationsStable application namespace50 process-local engines with scenario-specific contracts
Index identity-preserving 2D–4D boxestreemendous.multidimensionalExperimentalProcess-local; not exported from the package root

The task-oriented interface guide explains these boundaries in detail.

Install

Tree-Mendous supports CPython 3.11–3.13.

python -m pip install treemendous

RangeSet quickstart

This complete example reserves unavailable edges, atomically allocates the first two-unit slot, and checks the remaining capacity:

fromtreemendousimportSpan, create_range_setranges=create_range_set((0, 24), backend="py_boundary")
ranges.discard(Span(0, 9))
ranges.discard(Span(17, 24))
booking=ranges.allocate(2, not_before=9, not_after=17)
assertbookingisnotNoneassertbooking.span==Span(9, 11)
assertranges.first_fit(2, not_before=11, not_after=17).span==Span(11, 13)
assertranges.snapshot().total_free==6

allocate returns None if no fit exists. Coordinates must be integers, lengths must be positive, and mutations must stay inside the managed domain. Payload behavior is selected with an explicit UniformPayloadPolicy, JoinPayloadPolicy, or OrderedPayloadPolicy; see the API guide.

Exact-batch quickstart

Use ExactBatchRangeSet when one ordered, geometry-only batch must either publish completely or leave the prior snapshot visible:

fromtreemendousimportSpanfromtreemendous.exact_batchimport (
BatchMutation,
ExactBatchRangeSet,
MutationOpcode,
)
ranges=ExactBatchRangeSet((0, 64), initially_available=False)
results=ranges.mutate(
[
BatchMutation(MutationOpcode.ADD, 8, 20),
BatchMutation(MutationOpcode.DISCARD_REQUIRE_COVERED, 10, 14),
]
)
assert [result.changedforresultinresults] == [
(Span(8, 20),),
(Span(10, 14),),
]
assertranges.snapshot().intervals[0].span==Span(8, 10)

Rows execute in input order. Per-instance limits bound operations, live intervals, changed spans, packed-result bytes, and staging work. Exact batch is not a RangeSet backend and is not integrated into the 50 application engines. Read the exact-batch contract.

Performance

Performance depends on workload shape, state size, backend availability, platform, and which wrapper or materialization layers are timed. Current local Apple M5 Max/macOS 26.5.1/CPython 3.12.7 standard measurements put cpp_boundary at about 0.30M–0.91M timed public operations per second across six traces with 64–128 initial intervals. This is evidence for those traces, not a universal throughput claim. Large snapshots and sorted-vector exact batches can become copy-bound.

The performance guide reports operation-level measurements, hosted 1.1.0 exact-batch evidence, timing boundaries, and the optimization roadmap. The benchmark methodology explains correctness checks and durable artifacts.

Applications and reusable patterns

The 50 concrete engines cover partitioning, scheduling, overlap catalogs, allocation, and numeric leasing. Each has its own factory, state model, and exclusions; names describing distributed work do not imply transport, consensus, or durable storage. Start with the application index or the application-pattern guide.

Two additional executable patterns demonstrate APIs outside the 50-engine registry:

The registered radio-spectrum engine is the existing generic BoxIndex integration: it wraps an experimental BoxIndex(2) inside its stable, application-specific reservation contract. The Morton catalog instead uses one-dimensional Morton candidate bands plus exact Cartesian filtering. The new BoxIndex3D pattern is outside the registry, and exact batch is not integrated into any of the 50 engines.

Backend maturity

Automatic selection considers only stable backends that are available, pass semantic probes, and satisfy requested capabilities. Selecting an unavailable or invalid backend raises a reasoned error.

Backend IDRuntimeWidthMaturityNotes
py_boundaryPython/CPU64-bitStableCore geometry
py_avl_earliestPython/CPU64-bitStableCore geometry
py_summaryPython/CPU64-bitStableBest-fit + analytics
py_treapPython/CPU64-bitStableRandom interval sampling
py_boundary_summaryPython/CPU64-bitStableBest-fit + analytics
cpp_boundaryC++/CPU64-bitStable when builtCore geometry
cpp_treapC++/CPU32-bitExperimentalNot selectable
cpp_boundary_summaryC++/CPU32-bitExperimentalNot selectable
cpp_boundary_summary_optimizedC++/CPU32-bitExperimentalNot selectable
gpu_boundary_summaryCUDA/GPU32-bitExperimentalNot selectable
metal_boundary_summaryMetal/GPU32-bitExperimentalNot selectable

See the backend catalog for discovery and qualification details.

Documentation

Development

git clone https://github.com/josephjohncox/TreeMendous.git
cd TreeMendous
uv sync --all-extras
just check
just run-examples

Use just build for locally verified wheel and source artifacts. See Contributing and Releasing for the complete quality and publication contracts.

BSD-3-Clause license.

About

Exact integer range sets with Python/C++ backends, atomic native batches, experimental multidimensional indexes, and 50 application engines.

Topics

Resources

Contributing

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages