Skip to main content

Lightweight Gaussian Process inference in C++17 with Python bindings — Apple Metal / Accelerate on macOS and NVIDIA CUDA / OpenBLAS on Linux. A complement to GPyTorch for projects that need GP regression with a small dependency footprint or direct C++ embedding.

Project description

LightGP

Lightweight Gaussian Process inference in C++ with Python bindings. Apple Metal + Accelerate (AMX) on macOS; NVIDIA CUDA + OpenBLAS on Linux. NumPy-first Python API with no deep-learning framework dependency.

CI Docs arXiv License: MIT PyPI


Install

pip install lightgp

Prebuilt wheels are published for macOS-arm64 (with Metal + Accelerate) and manylinux2014 x86_64 (with OpenBLAS). The Linux wheels are CPU-only; for the CUDA backend, build from source with LIGHTGP_ENABLE_CUDA=1.

From source (any platform — requires a C++17 compiler):

git clone https://github.com/Fangop/lightgp.git
cd lightgp/python
pip install -e ".[test]"

The source build uses scikit-build-core. On macOS-arm64 it auto-detects Apple Accelerate and Metal; on Linux it auto-detects OpenBLAS / LAPACK and, when LIGHTGP_ENABLE_CUDA=1 is set, CUDA.

Quick start

import numpy as np
import lightgp as gp

X = np.linspace(-3, 3, 100, dtype=np.float32).reshape(-1, 1)
y = np.sin(X[:, 0]).astype(np.float32) + 0.1 * np.random.randn(100).astype(np.float32)

model = gp.GPExact(gp.RBF())
model.fit(X, y)
model.optimize(steps=50)
pred = model.predict(X)             # → {'mean': (100,) float32, 'var': (100,) float32}

Kernel composition with Python operators:

kernel = gp.Scale(gp.RBF()) + gp.Scale(gp.Periodic(period=1.0))
model = gp.GPExact(kernel, mean=gp.LinearMean(input_dim=1), noise_var=0.01)
model.fit(X, y)
model.optimize(steps=200)

Sparse GP for large datasets:

model = gp.GPSparse(noise_var=0.1)
model.fit(X_big, y_big, num_inducing=200)  # scales to N=50000 in ~100 ms

Documentation

Full docs at https://fangop.github.io/lightgp/ — getting started, six tutorials, complete API reference, benchmarks gallery, theory pages, and a developer guide.

Features

  • Four inference paths — exact Cholesky, matrix-free conjugate gradients, sparse Titsias VFE, and SKI/KISS-GP with FFT.
  • Composable kernels — RBF, Matérn-{½, 3/2, 5/2}, Periodic, Linear, plus +, *, and Scale operators that build kernel trees with jointly optimisable hyperparameters.
  • Mean functions — Zero, Constant, Linear.
  • Apple Metal backend — native Metal Shading Language compute shaders, including a fused matrix-free $K\mathbf v$ kernel that keeps CG memory at O(N).
  • NVIDIA CUDA backend — cuBLAS sgemm, cuSOLVER spotrf, cuFFT-driven SKI, and custom kernels for kernel-matrix construction and matrix-free matvecs.
  • Tuned CPU paths — Apple Accelerate / AMX on macOS, OpenBLAS / LAPACK on Linux, auto-detected by the build script.
  • Backend::Auto picks CPU vs Metal vs CUDA based on N, D, and the requested solver — users don't have to think about hardware crossover points.
  • Pure-C++17 core — embeddable in iOS apps, robotics stacks, simulators, and game engines without bringing in a deep-learning framework.
  • Python bindings via pybind11scikit-build-core builds the right backend per platform from source (Metal on macOS-arm64, CUDA on Linux when LIGHTGP_ENABLE_CUDA=1) and exposes the full API with NumPy interop.

Benchmarks

End-to-end GP fit + predict against GPyTorch on identical hardware (fp32, D=4, median of 5 runs).

Apple M4 (10 CPU cores, 8 GPU cores, 16 GB unified memory)

Config LightGP CPU LightGP Metal GPyTorch CPU GPyTorch MPS LightGP best vs GPyTorch best
Exact RBF, N=2048 23.6 ms 195 ms 89 ms (gap*) 3.8× faster
Exact Matérn-5/2, N=2048 42 ms 191 ms 106 ms (gap*) 2.5× faster
Sparse RBF, N=10k, M=200 18.5 ms 42 ms 42 ms 69 ms 2.3× faster
Sparse RBF, N=50k, M=200 97.4 ms 156 ms 196 ms 98 ms 2.0× faster vs CPU; on par with MPS
Matrix-free $K\mathbf v$, N=20k n/a 22 ms n/a (no equiv) 32× over explicit

*GPyTorch MPS falls back to CPU for exact-GP variance because aten::_linalg_eigh.eigenvalues is not yet implemented on PyTorch's MPS backend — the gap is in PyTorch itself, not in GPyTorch.

NVIDIA RTX 3060 (12 GB VRAM, CUDA 12.0)

Config LightGP CUDA GPyTorch CUDA LightGP advantage
Exact RBF, N=512 2.0 ms 10.3 ms 5.2×
Exact RBF, N=1024 5.3 ms 35.4 ms 6.7×
Exact RBF, N=2048 28.0 ms 63.0 ms 2.3×
Exact RBF, N=4096 152 ms 111 ms 0.7× (GPyTorch wins)
Sparse RBF, N=1000, M=100 (warm) 0.9 ms 13.6 ms 15.3×
Sparse RBF, N=10k, M=200 (warm) 13.7 ms 23.9 ms 1.7×
Sparse RBF, N=50k, M=200 (warm) 75 ms 55 ms 0.7× (GPyTorch wins)
Matrix-free $K\mathbf v$, N=20k 9.8 ms (no equiv) unique to LightGP
Matrix-free $K\mathbf v$, N=100k 204 ms (no equiv) unique to LightGP
Cholesky, N=4096 (component) 37 ms n/a (not exposed) 136× over OpenBLAS

LightGP wins on 11 of 13 head-to-head Exact and Sparse configurations across both platforms — the gap comes from a direct C++ → BLAS call path versus the Python interpreter + PyTorch dispatcher + ATen operator registry that GPyTorch traverses on every kernel call. Both libraries hit the same underlying BLAS underneath. GPyTorch keeps the edge at large exact-GP sizes (N=4096) and large sparse VFE (N=50k) where its persistent device tensors and compiled autograd amortise the per-call overhead.

The matrix-free $K\mathbf v$ kernel is unique to LightGP on both Apple Silicon and NVIDIA: PyTorch doesn't yet expose user-defined Metal compute shaders, and the CUDA fusion would require building a custom op outside GPyTorch. It enables CG-based GP inference at N=100k+ with O(N) memory instead of O(N²) for the explicit kernel matrix.

The SKI / KISS-GP path with FFT runs a 500 000-point GP fit + predict in under 1 second on the RTX 3060 (and uses Accelerate vDSP for the equivalent path on Mac). Full numbers, including SKI, GEMM, Cholesky, and GPyTorch comparisons across more sizes, are in the benchmarks gallery and the accompanying paper.

C++ usage (embedding without Python)

lightgp is a dependency-free C++17 library — embed in iOS apps, robotics stacks, game engines.

#include "lightgp/inference/gp_exact.h"
#include "lightgp/kernels/composite_kernel.h"
#include "lightgp/kernels/rbf_kernel.h"
#include "lightgp/kernels/periodic_kernel.h"
#include "lightgp/core/mean.h"

using namespace lightgp;

auto kernel = scale(std::make_shared<RBFKernel>())
            + scale(std::make_shared<PeriodicKernel>(/*l=*/1.0f, /*period=*/1.0f));
auto mean   = std::make_shared<LinearMean>(/*input_dim=*/1);

GPExact gp(kernel, mean, /*noise_variance=*/0.01f, Backend::Auto);
gp.fit(X_train, y_train);              // X_train, y_train: row-major float32 Tensors
gp.optimize_hyperparameters(/*steps=*/200);

Tensor mean_out, var_out;
gp.predict(X_test, mean_out, var_out);

For very large N, switch to matrix-free CG (the N×N kernel is never materialized):

GPExact gp_cg(kernel, mean, 0.01f, Backend::Metal, Solver::CG);
gp_cg.fit(X_huge, y_huge);

For huge datasets, sparse VFE:

GPSparseHyperparams hp;
GPSparse gp_sp(hp);
gp_sp.fit(X_huge, y_huge, /*num_inducing=*/200);   // O(NM² + M³)

Building from source

macOS (M-series — Metal + Accelerate auto-detected)

./build.sh
./build/run_tests                       # 853 test cases across the C++ suite
./build/basic_regression
./build/mauna_loa                       # kernel composition demo
./build/bench_paper                     # full benchmark suite, JSON-per-line stdout

Linux (CPU + optional CUDA)

# CPU only (OpenBLAS / LAPACK auto-detected if installed)
./build.sh

# With CUDA (requires nvcc + CUDA Toolkit)
LIGHTGP_ENABLE_CUDA=1 ./build.sh

./build/run_tests

Install OpenBLAS / LAPACK first to get the fast CPU path:

sudo apt install libopenblas-dev liblapack-dev   # Debian / Ubuntu

The CUDA backend wires through Backend::CUDA and covers cuBLAS GEMM, cuSOLVER Cholesky, cuFFT (used by Solver::SKI), and custom CUDA kernels for the RBF / Matérn matrix construction and matrix-free :math:K\mathbf v matvec. Backend::Auto picks CUDA automatically when the build was configured with LIGHTGP_ENABLE_CUDA=1 and an NVIDIA device is present.

Opt-out flags

LIGHTGP_NO_METAL=1 ./build.sh             # disable Metal even on Darwin
LIGHTGP_NO_ACCELERATE=1 ./build.sh        # use reference C++ instead of Apple BLAS

Python bindings (development build, no CMake required)

python3 -m venv .venv && source .venv/bin/activate
pip install pybind11 numpy pytest
./python/build_python.sh                 # produces python/lightgp/_core.<ext>.so
PYTHONPATH=python pytest python/tests -v

Project layout

lightgp/
├── core/                Tensor, dispatch, backend / solver enums, Accelerate wrappers
├── kernels/             Kernel hierarchy (RBF, Matérn, Periodic, Linear, Sum/Product/Scale)
│   ├── cpu/             reference CPU + Accelerate paths
│   └── metal/           Metal Shading Language compute shaders
├── solvers/             Cholesky, conjugate gradients, Lanczos log-det
│   ├── cpu/
│   └── metal/
├── inference/           GPExact, GPSparse
├── data/                Bundled benchmark datasets (motorcycle, Mauna Loa, kin40k stand-ins)
├── tests/               853 C++ test cases
├── benchmarks/          10 standalone benches + Python GPyTorch comparison
├── examples/            basic_regression, mauna_loa (kernel composition)
└── python/              pybind11 bindings + pytest suite

Citation

If you use LightGP in your research, please cite:

@misc{fang2026lightgp,
  title         = {LightGP: Lightweight Gaussian Process Inference in C++ on Metal and CUDA},
  author        = {Yu-Hsueh Fang},
  year          = {2026},
  eprint        = {2605.17898},
  archivePrefix = {arXiv},
  primaryClass  = {cs.LG},
  doi           = {10.48550/arXiv.2605.17898},
  url           = {https://arxiv.org/abs/2605.17898}
}

📄 Read the paper

License

MIT License. Copyright (c) 2026 Yu-Hsueh Fang. See LICENSE for the full text.

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

lightgp-0.1.2.tar.gz (13.5 kB view details)

Uploaded Source

Built Distributions

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

lightgp-0.1.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

lightgp-0.1.2-cp313-cp313-macosx_14_0_arm64.whl (209.3 kB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

lightgp-0.1.2-cp313-cp313-macosx_11_0_x86_64.whl (220.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ x86-64

lightgp-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

lightgp-0.1.2-cp312-cp312-macosx_14_0_arm64.whl (209.3 kB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

lightgp-0.1.2-cp312-cp312-macosx_11_0_x86_64.whl (220.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ x86-64

lightgp-0.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

lightgp-0.1.2-cp311-cp311-macosx_14_0_arm64.whl (207.6 kB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

lightgp-0.1.2-cp311-cp311-macosx_11_0_x86_64.whl (217.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

lightgp-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

lightgp-0.1.2-cp310-cp310-macosx_14_0_arm64.whl (206.3 kB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

lightgp-0.1.2-cp310-cp310-macosx_11_0_x86_64.whl (215.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ x86-64

File details

Details for the file lightgp-0.1.2.tar.gz.

File metadata

  • Download URL: lightgp-0.1.2.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lightgp-0.1.2.tar.gz
Algorithm Hash digest
SHA256 b0fc20d171a90f8a92a740c97f9b1e26735f8ba2b2262acb1ed64ee16957e707
MD5 26d77253784bd83484f2d088c7686768
BLAKE2b-256 43da43e5dd19c374f11041c584722b762d158342b489940b4dd187a1818b9fd1

See more details on using hashes here.

Provenance

The following attestation bundles were made for lightgp-0.1.2.tar.gz:

Publisher: publish.yml on Fangop/lightgp

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

File details

Details for the file lightgp-0.1.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lightgp-0.1.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3054efca8804dcd55f3f60b8cec4a75adf4f3461724dc54703d4ada1e450ca96
MD5 e62ba930b337eb2493dae69279765593
BLAKE2b-256 b44bcfb4c0997337c9b85c581ab766ca80402917770a3192fe5bfb631ace5362

See more details on using hashes here.

Provenance

The following attestation bundles were made for lightgp-0.1.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on Fangop/lightgp

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

File details

Details for the file lightgp-0.1.2-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for lightgp-0.1.2-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 c44ce266dbda4fdf278a826b6442373d9e7b84ac81f1bd961fb44987b6ad092d
MD5 0e06ef2fd4464cdb4c771ab0e1498c31
BLAKE2b-256 20ef20612a3bd483213383be45540ee281bcd98454bee033b51e887358d64acd

See more details on using hashes here.

Provenance

The following attestation bundles were made for lightgp-0.1.2-cp313-cp313-macosx_14_0_arm64.whl:

Publisher: publish.yml on Fangop/lightgp

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

File details

Details for the file lightgp-0.1.2-cp313-cp313-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for lightgp-0.1.2-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 d6787fdc7a073076f21d3c2a0de4e5f1011d2ce3edf23496db1be55f30ea508c
MD5 3a2fc3d2f02d82fca8393491a1b670da
BLAKE2b-256 809fcfd61b87eaadec37ac5e293b1ab9f4b15b29b33baa7c7280241636499e59

See more details on using hashes here.

Provenance

The following attestation bundles were made for lightgp-0.1.2-cp313-cp313-macosx_11_0_x86_64.whl:

Publisher: publish.yml on Fangop/lightgp

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

File details

Details for the file lightgp-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lightgp-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 90a59b880e9c3ade004249972ecbd0cb0a95197a8326831e230b209e61764f7b
MD5 7dd84ecc72a1ce3458e3d05d3d1c0dea
BLAKE2b-256 f5b81f53a4c6172f2bf8f9e81212968c012beb755e6d4fb0b6d6299702cbff56

See more details on using hashes here.

Provenance

The following attestation bundles were made for lightgp-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on Fangop/lightgp

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

File details

Details for the file lightgp-0.1.2-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for lightgp-0.1.2-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 f05e13a7beabbe5b8c01576a163d3128e499b7f34712f315be33860bc53f71d8
MD5 97d31b2d11f84aaa3cdffca4f8c51f66
BLAKE2b-256 987910606d2a8406884f3166b978e7dd3d604e781e952b9e51f5e4383903bf6f

See more details on using hashes here.

Provenance

The following attestation bundles were made for lightgp-0.1.2-cp312-cp312-macosx_14_0_arm64.whl:

Publisher: publish.yml on Fangop/lightgp

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

File details

Details for the file lightgp-0.1.2-cp312-cp312-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for lightgp-0.1.2-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 4f71eb0aa2893a12be654c546d741956191c38c858b254bb6afc46442b1aabc0
MD5 727a4e6567a67ed11c17be02d8a50ac1
BLAKE2b-256 08e79d91ad1d4cb9e92a91783bfe2f9f442c8e39c9bcc9428dc786d4e91c0f2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for lightgp-0.1.2-cp312-cp312-macosx_11_0_x86_64.whl:

Publisher: publish.yml on Fangop/lightgp

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

File details

Details for the file lightgp-0.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lightgp-0.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 16ad364dc3504006b011152a6b52de9c6601ba76a6a14d5e02e8cbbb7de410b5
MD5 14bcdc47e44a839d1dcc50ad1bba888e
BLAKE2b-256 d5888c19f47a6bc62b02fa18b6518cd344f099d48b625dcda7b0611275163c20

See more details on using hashes here.

Provenance

The following attestation bundles were made for lightgp-0.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on Fangop/lightgp

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

File details

Details for the file lightgp-0.1.2-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for lightgp-0.1.2-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 f9ca5214791f5b734b03d0e2e82f29ab6158c6e04386453e548f8f7d7cb7e6c0
MD5 8b5104c6d6750d6df73649fd9bc2eddf
BLAKE2b-256 1b27699f7c119ddb69b66fa996bb4ae17f6a637c11abbb10b9bc240bdf717d89

See more details on using hashes here.

Provenance

The following attestation bundles were made for lightgp-0.1.2-cp311-cp311-macosx_14_0_arm64.whl:

Publisher: publish.yml on Fangop/lightgp

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

File details

Details for the file lightgp-0.1.2-cp311-cp311-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for lightgp-0.1.2-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 691fbfe754b35a8fb4bafb39f9df09cd9c4d1c2a6784cbed530b560277334e49
MD5 d69854bf4795f24fd036f213fa3d759d
BLAKE2b-256 eb8edb69f15917890f9f13903d230ca6b91f163a3af814b294a4be2c34ec7a53

See more details on using hashes here.

Provenance

The following attestation bundles were made for lightgp-0.1.2-cp311-cp311-macosx_11_0_x86_64.whl:

Publisher: publish.yml on Fangop/lightgp

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

File details

Details for the file lightgp-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lightgp-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 430c13fc1b5490e6fd41892a9641f85c469228744585749eb0c9e0131fda0716
MD5 55f05448ff038496164dee84990823cd
BLAKE2b-256 73d111fd7584b254821b430b57350884d73de927ef8d66db6b227b7305423698

See more details on using hashes here.

Provenance

The following attestation bundles were made for lightgp-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on Fangop/lightgp

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

File details

Details for the file lightgp-0.1.2-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for lightgp-0.1.2-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e21ada3f936b012a959586e0084a4e1f4b5a8cee19a869a66334dbb15affefd8
MD5 47b70b1bdf2a860b41714153f01415cf
BLAKE2b-256 82fb763475dfa8da0735c8f32228d83a803fcf9b577c6ae1d8896109a4df82a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for lightgp-0.1.2-cp310-cp310-macosx_14_0_arm64.whl:

Publisher: publish.yml on Fangop/lightgp

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

File details

Details for the file lightgp-0.1.2-cp310-cp310-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for lightgp-0.1.2-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 47e48e8a97862d67c16f20b9954973709c312bd7357c6a07b6a36f56fb0ce419
MD5 55852cb183ca1fa8862f168ca556838e
BLAKE2b-256 2979bfb3072768012bff7319937873d58a753dd87f7f0bdd777242f3530c14e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for lightgp-0.1.2-cp310-cp310-macosx_11_0_x86_64.whl:

Publisher: publish.yml on Fangop/lightgp

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