Skip to main content

Exact ellipsoid intersection tests and spatial trees (header-only C++ core with Python bindings)

Project description

ellipsoid_tree

Exact intersection tests for ellipsoids and friends. Points, boxes, balls, ellipsoids, and simplices in R^d; single pairs, tree-accelerated queries, and tree-vs-tree sweeps. Header-only C++17 with Python bindings; Eigen is the only dependency.

CI Docs PyPI Python versions License: MIT

A family of anisotropic ellipsoids partitioned into batches of mutually non-overlapping members (example). The figures throughout are 2D because the built-in visualization is 2D; the library itself is dimension-generic.

The design in one idea

ellipsoid_tree is organized around a small closed system:

Objects. Five geometric types — point, Box, Ball, Ellipsoid, Simplex. A Simplex may be lower-dimensional (a point, segment, or triangle embedded in R^d). Two more types participate as queries only: Segment and Halfspace.

Trees over each type. BoxTree, BallTree, EllipsoidTree, and SimplexTree index a family of objects for logarithmic-time queries (SimplexMesh adds mesh connectivity on top of a cell tree; a point cloud is a BallTree with zero radii).

Intersections at three levels, all built from one table of exact pairwise tests:

level call what you get
object × object intersects(A, B) one exact test
tree × object tree.collisions(B) every member of a family intersecting B
tree × tree collision_pairs(T1, T2) every intersecting pair between two families, in one simultaneous descent of both trees

The diagonal of the third level is self-collision (tree.self_collision_pairs()), which yields the overlap graph of a family: the input to batch picking. Tree × tree over two meshes' cell trees is mesh × mesh collision, the kernel of supermeshing.

The intersection table

The algorithm behind each cell of intersects (all exact; solver-backed cells to documented tolerance). See the visual gallery of every pair.

point Box Ball Ellipsoid Simplex
point coordinate bounds distance Mahalanobis test (LDLT) barycentric solve
Box interval overlap clamped closest point projected coordinate-descent QP phase-I LP
Ball center distance Gilitschenski–Hanebeck with Σ = r²I face-enumeration projection (Euclidean)
Ellipsoid generalized eigenproblem + 1D minimization (Gilitschenski–Hanebeck) face-enumeration projection in the Σ⁻¹ metric
Simplex phase-I LP (convex hull vs convex hull)

Query-only columns: a Segment is tested by the slab method (box), projection (ball), a 1D quadratic (ellipsoid), or coordinate intervals (simplex); a Halfspace is a closed-form support-function comparison against everything.

Conventions: ellipsoids are E(τ) = {x : (x−μ)ᵀ Σ⁻¹ (x−μ) ≤ τ²} with Σ symmetric positive definite and the scale τ passed at call time. All objects are solid and closed, so touching counts as intersecting. Tree queries prune conservatively (an ellipsoid query uses a bounding-box test and then the exact ellipsoid-box QP on survivors), so acceleration never changes answers.

Beyond intersections

  • Simplicial meshes (SimplexMesh): point location with barycentric coordinates, closest boundary point, CG1 finite element evaluation, mesh × ellipsoid and mesh × mesh queries.
  • Supporting cast: k-nearest-neighbor KDTree, axis-alternating geometric_sort, greedy non-overlapping ellipsoid batch picking.
  • Optional zero-dependency 2D visualization (ellipsoid_tree/plot2d.hpp): SVG and PNG figures of objects, trees, queries, and CG1 fields. Every figure in the documentation is drawn with it.

Quick start

#include "ellipsoid_tree/ellipsoid_tree.hpp"
using namespace ellipsoid_tree;

Ellipsoid A{mu_a, Sigma_a}, B{mu_b, Sigma_b};
bool overlap = intersects(A, B, /*tau=*/1.0);

EllipsoidTree tree(family_of_ellipsoids, /*tau=*/1.0);
std::vector<int> hits = tree.collisions(some_box);
auto batches = pick_ellipsoid_batches(tree);

Installing

C++ — three equivalent routes, all ending in target_link_libraries(your_target PRIVATE ellipsoid_tree::ellipsoid_tree):

  • vendor or FetchContent this repo and add_subdirectory(ellipsoid_tree);
  • or install it: cmake -S . -B build && cmake --install build --prefix <prefix>, then find_package(ellipsoid_tree REQUIRED) from any project with <prefix> on CMAKE_PREFIX_PATH;
  • or just add include/ to your include path (header-only; Eigen required).

Eigen is found via find_package(Eigen3), with an automatic pinned download as fallback when building this repo standalone.

Pythonpip install ellipsoid-tree (or pip install git+https://github.com/NickAlger/ellipsoid_tree) builds the ellipsoid_tree module via scikit-build-core; points are rows ((n, d) arrays, scipy-style), and figures render inline in Jupyter. Alternatively, build the module without pip via cmake -B build -DELLIPSOID_TREE_BUILD_PYTHON=ON && cmake --build build --target ellipsoid_tree_python. For a worked walkthrough, see the Python quickstart notebook.

Compile-time and memory

ellipsoid_tree is header-only but includes Eigen, so every translation unit that includes an ellipsoid_tree header pays Eigen's compile cost — roughly 1.5 s and ~180 MB of RAM per file (a precompiled header cuts that to ~0.2 s and ~125 MB). This is normal for an Eigen-based library, but it adds up if you include ellipsoid_tree in many files. On a memory-limited machine, don't over-parallelize the build: keep at least ~1 GB of RAM per compile job (for example cmake --build . -j N with N no larger than your RAM in GB), or set up a precompiled header on your side.

Examples ("show, don't tell")

Every page in docs/examples/ is a complete program, its actual output, and the figures it draws, which are regenerated from the code by docs/generate_examples.py and checked in CI:

From Python: non-overlapping ellipsoid batches, in a Jupyter notebook — the batch-picking example via the bindings, with figures rendered inline (GitHub renders the executed notebook).

Building and testing

Header-only: add include/ to your include path. To run the tests and examples:

cmake -S . -B build && cmake --build build -j $(nproc) && ctest --test-dir build
python3 docs/generate_examples.py   # regenerate the example documentation

References and acknowledgements

ellipsoid_tree grew out of the point-spread-function probing developed in N. Alger, T. Hartland, N. Petra, and O. Ghattas, Point spread function approximation of high-rank Hessians with locally supported nonnegative integral kernels, SIAM Journal on Scientific Computing 46(3), 2024, A1658–A1689 — the origin of the non-overlapping ellipsoid batch-picking problem. The algorithms and tools it builds on:

  • I. Gilitschenski and U. D. Hanebeck, A Direct Method for Checking Overlap of Two Hyperellipsoids, Sensor Data Fusion: Trends, Solutions, Applications (SDF), 2014 — the ellipsoid–ellipsoid overlap test.
  • R. P. Brent, Algorithms for Minimization without Derivatives, Prentice-Hall, 1973 — the scalar minimizer used inside it.
  • Eigen for linear algebra; stb_image_write (public domain) for PNG encoding; doctest for testing; doxygen-awesome-css for the API-reference theme.

MIT license.

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

ellipsoid_tree-0.2.0.tar.gz (579.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ellipsoid_tree-0.2.0-cp313-cp313-win_amd64.whl (642.2 kB view details)

Uploaded CPython 3.13Windows x86-64

ellipsoid_tree-0.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (545.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

ellipsoid_tree-0.2.0-cp313-cp313-macosx_10_13_universal2.whl (1.0 MB view details)

Uploaded CPython 3.13macOS 10.13+ universal2 (ARM64, x86-64)

ellipsoid_tree-0.2.0-cp312-cp312-win_amd64.whl (642.1 kB view details)

Uploaded CPython 3.12Windows x86-64

ellipsoid_tree-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (545.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

ellipsoid_tree-0.2.0-cp312-cp312-macosx_10_13_universal2.whl (1.0 MB view details)

Uploaded CPython 3.12macOS 10.13+ universal2 (ARM64, x86-64)

ellipsoid_tree-0.2.0-cp311-cp311-win_amd64.whl (639.2 kB view details)

Uploaded CPython 3.11Windows x86-64

ellipsoid_tree-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (541.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

ellipsoid_tree-0.2.0-cp311-cp311-macosx_10_9_universal2.whl (998.1 kB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

ellipsoid_tree-0.2.0-cp310-cp310-win_amd64.whl (638.0 kB view details)

Uploaded CPython 3.10Windows x86-64

ellipsoid_tree-0.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (540.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

ellipsoid_tree-0.2.0-cp310-cp310-macosx_10_9_universal2.whl (995.4 kB view details)

Uploaded CPython 3.10macOS 10.9+ universal2 (ARM64, x86-64)

ellipsoid_tree-0.2.0-cp39-cp39-win_amd64.whl (638.4 kB view details)

Uploaded CPython 3.9Windows x86-64

ellipsoid_tree-0.2.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (540.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

ellipsoid_tree-0.2.0-cp39-cp39-macosx_10_9_universal2.whl (995.6 kB view details)

Uploaded CPython 3.9macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file ellipsoid_tree-0.2.0.tar.gz.

File metadata

  • Download URL: ellipsoid_tree-0.2.0.tar.gz
  • Upload date:
  • Size: 579.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ellipsoid_tree-0.2.0.tar.gz
Algorithm Hash digest
SHA256 53fbbea53a4b15d161ab200ba06b16ab73b06615fb037968d8696b92125a5f9c
MD5 b4288af644cf7f9bea2497e8ddc5fc86
BLAKE2b-256 33dbf9e69995ee72022b210372efe95bc37b3cd0735a62fabd1b133c16e034d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for ellipsoid_tree-0.2.0.tar.gz:

Publisher: wheels.yml on NickAlger/ellipsoid_tree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ellipsoid_tree-0.2.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for ellipsoid_tree-0.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d260d0186e78389226064c498c33aae0d15c1dc2385aa8d545db4f37aada146d
MD5 6ad1bf29d4540a6945dedea11d848c4b
BLAKE2b-256 cf0c65963532d090d8889e88a70859f3ba2967720ddd4030b38bf317515e3b7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for ellipsoid_tree-0.2.0-cp313-cp313-win_amd64.whl:

Publisher: wheels.yml on NickAlger/ellipsoid_tree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ellipsoid_tree-0.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ellipsoid_tree-0.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c2e5215f7eebd5b8b26ffe951ede8cc2a7028dd2e0e2b2674d611a9a64c6cfda
MD5 2b72c7dc2d08319677f6ffa299e32eed
BLAKE2b-256 ea2d3b095e0e06f711adbd2e74bd95156f12f95fd76a66ad55f619d4ab3bdb76

See more details on using hashes here.

Provenance

The following attestation bundles were made for ellipsoid_tree-0.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on NickAlger/ellipsoid_tree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ellipsoid_tree-0.2.0-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for ellipsoid_tree-0.2.0-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 3457b2cf227751a68fd4b0732e142eda189647d066a5eb7ead2b3b017bff8507
MD5 dce3a7a5bbfb63ea5e456cb876315ddb
BLAKE2b-256 09378c3ce2cc3d0e7596ba1ac8e6d07ff00ade12c1fe2dfbdb1ecbaee6a95f63

See more details on using hashes here.

Provenance

The following attestation bundles were made for ellipsoid_tree-0.2.0-cp313-cp313-macosx_10_13_universal2.whl:

Publisher: wheels.yml on NickAlger/ellipsoid_tree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ellipsoid_tree-0.2.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for ellipsoid_tree-0.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 cae4444557ba70c84b1a7a440f3400b0cb76970245c9b59a5d0fe50fef4e5ad0
MD5 7df2aaeb7a63a9eb2051b421db579e0f
BLAKE2b-256 595d1fa2b00071bb6663a93c5b5ea48770e27e4b1d9d9f9b8e6c1e266c905f72

See more details on using hashes here.

Provenance

The following attestation bundles were made for ellipsoid_tree-0.2.0-cp312-cp312-win_amd64.whl:

Publisher: wheels.yml on NickAlger/ellipsoid_tree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ellipsoid_tree-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ellipsoid_tree-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5b896a354e328b77bd43caf4701572d13affb2d8af01832068197837cc245e7f
MD5 d3e110ac6d0ee72f049aff1d894bdf3f
BLAKE2b-256 80f5aa2fdfb470ad8ed6700d548daaa6ac29fa99c2800b944ad4c9174bc22fe6

See more details on using hashes here.

Provenance

The following attestation bundles were made for ellipsoid_tree-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on NickAlger/ellipsoid_tree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ellipsoid_tree-0.2.0-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for ellipsoid_tree-0.2.0-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 a87a5773328ec1407b6feb22e2acfb562524a91c7dd43cf064f0957d24f40f9d
MD5 cc14ff04aeb68d24fe6e5308e9cbf6b5
BLAKE2b-256 9bfeba0a678f6a78ea9a65247a4e77c8c01aa9994837f55f02206ab2b233e71f

See more details on using hashes here.

Provenance

The following attestation bundles were made for ellipsoid_tree-0.2.0-cp312-cp312-macosx_10_13_universal2.whl:

Publisher: wheels.yml on NickAlger/ellipsoid_tree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ellipsoid_tree-0.2.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for ellipsoid_tree-0.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9842298123fecc607e5bea092e1c8d4587efb3dced3fa6d8c95c4381c840d533
MD5 79fa9f73b17104bcc404b554c912ed50
BLAKE2b-256 2b2af75a40a7bc89110f0ac89043d0ee1c4cb9aa673cadec473f54fde5471772

See more details on using hashes here.

Provenance

The following attestation bundles were made for ellipsoid_tree-0.2.0-cp311-cp311-win_amd64.whl:

Publisher: wheels.yml on NickAlger/ellipsoid_tree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ellipsoid_tree-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ellipsoid_tree-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e36a00b7f1c4e494d4e026c7d637d4f4a60ceb0f10f0db73aca2dae942a3b419
MD5 201f4d6090810acaee954c32830af831
BLAKE2b-256 3270418d76e75139a1343dc61f264f055c808ea2077676c4e5e9048b17c1d552

See more details on using hashes here.

Provenance

The following attestation bundles were made for ellipsoid_tree-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on NickAlger/ellipsoid_tree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ellipsoid_tree-0.2.0-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for ellipsoid_tree-0.2.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 81c38704ca349a4c41966cfa334cec4d5229664321796866d531cc821e639c51
MD5 41535108830f2d384cd3d7eb4e40069b
BLAKE2b-256 591dcced000820a58197aca8ad06d0af9a44c5f00d0e966509996fc64000f5b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for ellipsoid_tree-0.2.0-cp311-cp311-macosx_10_9_universal2.whl:

Publisher: wheels.yml on NickAlger/ellipsoid_tree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ellipsoid_tree-0.2.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for ellipsoid_tree-0.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 894f19f2a6ce8f11282dca7d08ac228ab8cfba244a3d15d21fb742f6f5b3a749
MD5 af2196cb728132c598b8e64327171a91
BLAKE2b-256 35d8a9c5bacff31df66a448e885cdff6d668b468e933a88ea8365c5deaffa47c

See more details on using hashes here.

Provenance

The following attestation bundles were made for ellipsoid_tree-0.2.0-cp310-cp310-win_amd64.whl:

Publisher: wheels.yml on NickAlger/ellipsoid_tree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ellipsoid_tree-0.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ellipsoid_tree-0.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8f509c24b8d789368c19444bf2c24ec10be00577acc8205b7a7652c82a138cae
MD5 0c4b3a4cace0103bb3cafa2c78a237a1
BLAKE2b-256 98e61f6f732bfc22e9937c4afa632d14484b84a92926e6daf4ad3c01b55bf045

See more details on using hashes here.

Provenance

The following attestation bundles were made for ellipsoid_tree-0.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on NickAlger/ellipsoid_tree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ellipsoid_tree-0.2.0-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for ellipsoid_tree-0.2.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 ef9b4fa117eac77e8b06752dfd470039e49bb2a47b6c0fd31be3f5ff9afe3e99
MD5 049113088366b791796a0f90b2e8e958
BLAKE2b-256 44632b3dfa04487fa1b7421c4240c717781f50cf644a4649518a9de7ab3e1f8b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ellipsoid_tree-0.2.0-cp310-cp310-macosx_10_9_universal2.whl:

Publisher: wheels.yml on NickAlger/ellipsoid_tree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ellipsoid_tree-0.2.0-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for ellipsoid_tree-0.2.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 0fafc9001f0f105ec645be54b934d050965393a9175451b87eab511856b7e2d1
MD5 0397756f73d79d7882327980de710f3b
BLAKE2b-256 5df8a38c97ade0efdbba121985d0fdd0671fe6360bc3d28aa2c85b924abaf5ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for ellipsoid_tree-0.2.0-cp39-cp39-win_amd64.whl:

Publisher: wheels.yml on NickAlger/ellipsoid_tree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ellipsoid_tree-0.2.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ellipsoid_tree-0.2.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2bedff7eb5f58b0a2d108f14e70aa9d30ae96f1236de9ffef94b63f5c36ab575
MD5 c675ff83e588edc4ed4a91d331c87443
BLAKE2b-256 71d9aaa52520b2f83da232f34958451409c9233a0e254a7f77a9b835a406bd3c

See more details on using hashes here.

Provenance

The following attestation bundles were made for ellipsoid_tree-0.2.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on NickAlger/ellipsoid_tree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ellipsoid_tree-0.2.0-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for ellipsoid_tree-0.2.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 7603eba08b3785660319ce65a4ecfb569c6b13d7ff215f039454e51c354ab6c7
MD5 1c349984b218b39538a269c9949d3b1e
BLAKE2b-256 d5dbbd9b8f5f7798a351678a78b184ea64c4aa5b17c7a5a7179d43dc27ddedb5

See more details on using hashes here.

Provenance

The following attestation bundles were made for ellipsoid_tree-0.2.0-cp39-cp39-macosx_10_9_universal2.whl:

Publisher: wheels.yml on NickAlger/ellipsoid_tree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page