Skip to main content

KLUJAX

version: 0.5.0.post7

A sparse linear solver for JAX based on the efficient KLU algorithm.

This is a fork of the original klujax package, meant for use in splineax. The aim is to eventually merge the changes here into the upstream package and remove this fork. In the meantime, the version number will stay as 0.5.0.postN, and N will be incremented sequentially on each new published version.

CPU & float64

This library is a wrapper around the SuiteSparse KLU algorithms. This means the algorithm is only implemented for C-arrays and hence is only available for CPU arrays with double precision, i.e. float64 or complex128.

Note that float32/complex64 arrays will be cast to float64/complex128!

Basic Usage

The klujax library provides a basic function solve(Ai, Aj, Ax, b), which solves for x in the sparse linear system Ax=b, where A is explicitly given in COO-format (Ai, Aj, Ax).

NOTE: the sparse matrix represented by (Ai, Aj, Ax) needs to be coalesced! KLUJAX provides a coalesce function (which unfortunately is not jax-jittable).

Supported shapes (? suffix means optional):

  • Ai: (n_nz,)
  • Aj: (n_nz,)
  • Ax: (n_lhs?, n_nz)
  • b: (n_lhs?, n_col, n_rhs?)
  • A (represented by (Ai, Aj, Ax)): (n_lhs?, n_col, n_col)

KLUJAX will automatically select a sensible way to act on underdefined dimensions of Ax and b:

dim(Ax) dim(b) assumed shape(Ax) assumed shape(b)
1D 1D n_nz n_col
1D 2D n_nz n_col x n_rhs
1D 3D n_nz n_lhs x n_col x n_rhs
2D 1D n_lhs x n_nz n_col
2D 2D n_lhs x n_nz n_lhs x n_col
2D 3D n_lhs x n_nz n_lhs x n_col x n_rhs

Where the A is always acting on the n_col dimension of b. The n_lhs dim is a shared batch dimension between A and b.

Additional dimensions can be added with jax.vmap (alternatively any higher dimensional problem can be reduced to the one above by properly transposing and reshaping Ax and b).

NOTE: JAX now has an experimental sparse library (jax.experimental.sparse). Using this natively in KLUJAX is not yet supported (but converting from BCOO or COO to Ai, Aj, Ax is trivial).

Basic Example

Script:

import klujax
import jax.numpy as jnp

b = jnp.array([8, 45, -3, 3, 19])
A_dense = jnp.array(
    [
        [2, 3, 0, 0, 0],
        [3, 0, 4, 0, 6],
        [0, -1, -3, 2, 0],
        [0, 0, 1, 0, 0],
        [0, 4, 2, 0, 1],
    ]
)
Ai, Aj = jnp.where(jnp.abs(A_dense) > 0)
Ax = A_dense[Ai, Aj]

result_ref = jnp.linalg.inv(A_dense) @ b
result = klujax.solve(Ai, Aj, Ax, b)

print(jnp.abs(result - result_ref) < 1e-12)
print(result)

Output:

[ True True True True True]
[1. 2. 3. 4. 5.]

Advanced Usage

For high-performance applications like transient simulations or iterative solvers, you should avoid using the high-level klujax.solve function. The klujax.solve is in fact a wrapper around three distinct parts of the KLU algorithm:

  1. Analyze (Symbolic): Inspects the sparsity pattern ($A_i, A_j$) to find optimal permutations and block triangular forms. This depends only on the structure of the matrix.
  2. Factorize (Numeric): Performs the actual LU decomposition. This depends on the values ($A_x$) and requires a symbolic handle.
  3. Solve (Numeric): Executes forward and backward substitution to find $x$. This depends on the right-hand side ($b$) and requires a numeric handle.

Significant performance gains are achieved by hoisting the "Analysis" or "Factorization" steps out of your inner loops.

1. High-Performance Transient Pattern (Reusing Symbolic)

In a simulation where the sparsity pattern is constant but the values ($A_x$) and right-hand side ($b$) change, you should perform the expensive analyze step exactly once outside your JIT loop.

import jax
import klujax

# 1. Analyze once in Python (CPU)
# Returns a SymbolToken: a cache handle that is freed automatically
symbolic = klujax.analyze(Ai, Aj, n_col)

@jax.jit
def simulation_step(Ax_t, b_t, sym):
    # 2. Use the symbolic handle inside JIT
    # The solver will perform numeric factorization and solve
    return klujax.solve_with_symbol(Ai, Aj, Ax_t, b_t, sym)

for t in range(steps):
    x_t = simulation_step(Ax[t], b[t], symbolic)

Fine-Grained Control (Numeric Factorization)

If you need to solve the same system with many different $b$ vectors while the matrix $A$ remains constant, you can further split the numeric factorization. This is often performed in a modified Newton-Raphson loop where the computationally expensive jacobian+factorization is only evaluated once and the solve stage is deemed "cheap" in comparison

# Factorize the matrix once
numeric = klujax.factor(Ai, Aj, Ax, symbolic)

@jax.jit
def fast_solve(b_t, num, sym):
    # This call is extremely fast as it skips factorization entirely
    return klujax.solve_with_numeric(num, b_t, sym)

for i in range(100):
    x_i = fast_solve(b_batch[i], numeric, symbolic)

Safe Refactorization (Status Codes & Conditioning)

klujax.refactor reuses the pivot order picked for the original matrix. That is what makes it fast, but it also means the factorization can fail, or silently lose accuracy, once the values have drifted far enough. Two additions make that recoverable.

klujax.refactor_with_status reports a failure through a status code rather than raising, so it can be branched on under jax.jit where an error would abort everything. klujax.refactor_and_solve_with_status does the same for the fused path.

numeric, status = klujax.refactor_with_status(Ai, Aj, Ax_new, numeric, symbolic)
if status[0] != klujax.KLUStatus.OK:
    # the numeric object is unusable for a solve, but the symbolic one is fine
    klujax.free_numeric(numeric)
    numeric = klujax.factor(Ai, Aj, Ax_new, symbolic)

When status != OK the numeric object may be partially overwritten and must not be used for a solve. It remains valid to pass to free_numeric, and the symbolic object is unaffected and may be reused for a fresh factor.

Degradation short of outright failure is caught by klujax.rcond, the reciprocal pivot growth estimate min|Uii| / max|Uii|. It costs O(n), far less than solving with a probe vector and measuring the residual. klujax.condest gives a proper 1-norm condition number estimate and is the usual follow-up when rcond is borderline.

if klujax.rcond(symbolic, numeric)[0] < 1e-10:
    ...  # pivots have degraded, re-factor from scratch

Lifecycle & Memory Safety

klujax.analyze and klujax.factor return handle tokens (SymbolToken, NumericToken). A token is a small cache id bundled with the arrays it can rebuild from, not a raw pointer, so handles are memory-safe by construction.

  • Forgetting to free leaks only a bounded amount. Handles live in a process-wide cache that holds a fixed number of KLU objects (eight by default, set by KLUJAX_FACTOR_CACHE). When it overflows, the least recently used object is evicted.

  • Using a freed or evicted handle is safe. Every call carries the matrix the handle needs, so a call that lands on a missing handle rebuilds it on the spot and continues. This is why freeing is optional and there is no ghost-pointer hazard: there is no pointer to dereference.

Because of this, creating a token inside jax.jit needs no special care. The id threads through the trace as data. A bare free is unordered against the solve, so to actually free inside the trace, order it after the solve by tracking the solution (or passing it as dependency):

@jax.jit
def dynamic_solve(Ai, Aj, Ax, b):
    sym = klujax.analyze(Ai, Aj, 5)
    x = klujax.solve_with_symbol(Ai, Aj, Ax, b, sym)
    klujax.free_symbolic(sym.track(x))   # ordered after the solve
    return x

Summary of Best Practices

  1. Hoist Creations: for best performance, call analyze or factor once outside JIT loops and reuse the handle.

  2. Freeing is optional: use free_symbolic / free_numeric (or the token's close(), or a with block) only to release memory sooner. The token stays usable afterwards.

  3. Watch rebuild_count(): a count that climbs during steady-state solving means the working set is larger than KLUJAX_FACTOR_CACHE. Set KLUJAX_STRICT_CACHE to turn a rebuild into an error while debugging. See the Memory Management guide.

Installation

The library is statically linked to the SuiteSparse C++ library. It can be installed on most platforms as follows:

pip install splineax-klujax

There exist pre-built wheels for Linux and Windows (python 3.8+). If no compatible wheel is found, however, pip will attempt to install the library from source... make sure you have the necessary build dependencies installed (see Installing from Source)

Installing from Source

NOTE: Installing from source should only be necessary when developing the library. If you as the user experience an install from source please create an issue.

Before installing, clone the build dependencies:

git clone --depth 1 --branch v7.2.0 https://github.com/DrTimothyAldenDavis/SuiteSparse suitesparse
git clone --depth 1 --branch main https://github.com/openxla/xla xla
git clone --depth 1 --branch stable https://github.com/pybind/pybind11 pybind11

Linux

On linux, you'll need gcc and g++, then inside the repo:

pip install .

MacOs

On MacOS, you'll need clang, then inside the repo:

pip install .

Windows

On Windows, installing from source is a bit more involved as typically the build dependencies are not installed. To install those, download Visual Studio Community 2017 from here. During installation, go to Workloads and select the following workloads:

  • Desktop development with C++
  • Python development

Then go to Individual Components and select the following additional items:

  • C++/CLI support
  • VC++ 2015.3 v14.00 (v140) toolset for desktop

Then, download and install Microsoft Visual C++ Redistributable from here.

After these installation steps, run the following commands inside a x64 Native Tools Command Prompt for VS 2017:

set DISTUTILS_USE_SDK=1
pip install .

License & Credits

© Floris Laporte 2022, LGPL-2.1

This library was partly based on:

This library vendors an unmodified version of the SuiteSparse libraries in its source (.tar.gz) distribution to allow for static linking. This is in accordance with their LGPL licence.

Metadata

Release files for splineax-klujax 0.5.0.post7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for splineax-klujax 0.5.0.post7
File
splineax_klujax-0.5.0.post7-cp314-cp314-win_arm64.whl CPython 3.14 CPython 3.14 Windows ARM64 Details
splineax_klujax-0.5.0.post7-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
splineax_klujax-0.5.0.post7-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64, Linux glibc 2.26+ x86-64 Details
splineax_klujax-0.5.0.post7-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
splineax_klujax-0.5.0.post7-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
splineax_klujax-0.5.0.post7-cp313-cp313-win_arm64.whl CPython 3.13 CPython 3.13 Windows ARM64 Details
splineax_klujax-0.5.0.post7-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
splineax_klujax-0.5.0.post7-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.26+ x86-64 Details
splineax_klujax-0.5.0.post7-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
splineax_klujax-0.5.0.post7-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
splineax_klujax-0.5.0.post7-cp312-cp312-win_arm64.whl CPython 3.12 CPython 3.12 Windows ARM64 Details
splineax_klujax-0.5.0.post7-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
splineax_klujax-0.5.0.post7-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.26+ x86-64, Linux glibc 2.28+ x86-64 Details
splineax_klujax-0.5.0.post7-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
splineax_klujax-0.5.0.post7-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
splineax_klujax-0.5.0.post7-cp311-cp311-win_arm64.whl CPython 3.11 CPython 3.11 Windows ARM64 Details
splineax_klujax-0.5.0.post7-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
splineax_klujax-0.5.0.post7-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.26+ x86-64, Linux glibc 2.28+ x86-64 Details
splineax_klujax-0.5.0.post7-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
splineax_klujax-0.5.0.post7-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details

Total release size: 33.9 MB

Release files / splineax_klujax-0.5.0.post7-cp314-cp314-win_arm64.whl

Download URL splineax_klujax-0.5.0.post7-cp314-cp314-win_arm64.whl
Size 222.3 kB
Tags CPython 3.14 Windows ARM64
SHA-256 checksum
How to use checksums
7573aa4e87520a80d7683d33bb77b719d8262437255e49ff15dfe6bd80d1c47b
BLAKE2b-256 checksum
How to use checksums
b0c2d41b1887c951463571166c6b26dca8d609657cea3b043d7993a9c1363bc7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / splineax_klujax-0.5.0.post7-cp314-cp314-win_amd64.whl

Download URL splineax_klujax-0.5.0.post7-cp314-cp314-win_amd64.whl
Size 237.3 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
1760bd9cd7a7e9345787d49a5187373748969d3f32acd2378cc55b2dd7c1bfbc
BLAKE2b-256 checksum
How to use checksums
3e3352345e5d5bb47e89070c20de0e6d81b5f7227267cfd65ba71c520dd33f71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / splineax_klujax-0.5.0.post7-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL splineax_klujax-0.5.0.post7-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 3.9 MB
Tags CPython 3.14 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f99bcae1f5a6d306d0d529d81421ccb9ca85ef47efc0a578fd4e5fef1d231658
BLAKE2b-256 checksum
How to use checksums
99abdc1517c4841981839029a12a9c2090717ca45d643512c07174e7a1442203
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / splineax_klujax-0.5.0.post7-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL splineax_klujax-0.5.0.post7-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 3.8 MB
Tags CPython 3.14 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
6a7b310ca3e8baf6392b48198dc23c3a271653304706aa75fb995345e67977ea
BLAKE2b-256 checksum
How to use checksums
51d4380ac5f0c0eff047706572c9558a7799cb9e0fc5be0ed8f76561ef0d84d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / splineax_klujax-0.5.0.post7-cp314-cp314-macosx_11_0_arm64.whl

Download URL splineax_klujax-0.5.0.post7-cp314-cp314-macosx_11_0_arm64.whl
Size 310.9 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
73ded1074a04bbff09d010c5dacf7606363e12910d92a3bfae9ada3236f9ff2d
BLAKE2b-256 checksum
How to use checksums
6d7a8ea7562a884336549b1d03430c487ca71c7e9e81b84ecf58feb6ee11c24d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / splineax_klujax-0.5.0.post7-cp313-cp313-win_arm64.whl

Download URL splineax_klujax-0.5.0.post7-cp313-cp313-win_arm64.whl
Size 215.2 kB
Tags CPython 3.13 Windows ARM64
SHA-256 checksum
How to use checksums
69a55098061cb97d2b2d48790604543a5d785bea6b0cb16ddbc5f0c9ecda1b18
BLAKE2b-256 checksum
How to use checksums
5d392db3263cb8fbf8e01553ecc7b64cfe677ff12105e9ef58184f8f792dd60d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / splineax_klujax-0.5.0.post7-cp313-cp313-win_amd64.whl

Download URL splineax_klujax-0.5.0.post7-cp313-cp313-win_amd64.whl
Size 231.8 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
5091ac0d153267b895e7b509da57a62ccfd20e002430fe0423fe74b55084598e
BLAKE2b-256 checksum
How to use checksums
982ddff2391aec325ad48fb6fd7d0b3e607b6435f433f4796b4d8e70cf18998d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / splineax_klujax-0.5.0.post7-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL splineax_klujax-0.5.0.post7-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 3.9 MB
Tags CPython 3.13 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4628666a79af322ab7a1914b4028630b6b55a520c63639c4484731972b08d54c
BLAKE2b-256 checksum
How to use checksums
196081e4a619c596ebf8eea750dfcd5c8ee4284e364520da6344a2af3eff1f41
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / splineax_klujax-0.5.0.post7-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL splineax_klujax-0.5.0.post7-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 3.8 MB
Tags CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
8b6a20268d7dce7df9730f58e0947541747128892400ae52642aa0b87ea581c8
BLAKE2b-256 checksum
How to use checksums
12af713e7f288a6e7ed6c7a5a51ecb1849f1265fad7324947394aab3b76a9f60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / splineax_klujax-0.5.0.post7-cp313-cp313-macosx_11_0_arm64.whl

Download URL splineax_klujax-0.5.0.post7-cp313-cp313-macosx_11_0_arm64.whl
Size 310.4 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
00eacb8b6084eb29338c306bee7599be1ca0e4da33e684d2446e6343776edcbb
BLAKE2b-256 checksum
How to use checksums
a3f3b35fef594acf4b09fe83ff9d718202e57d0baa3203af0fe42ee1bc86b655
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / splineax_klujax-0.5.0.post7-cp312-cp312-win_arm64.whl

Download URL splineax_klujax-0.5.0.post7-cp312-cp312-win_arm64.whl
Size 215.1 kB
Tags CPython 3.12 Windows ARM64
SHA-256 checksum
How to use checksums
286a90cc949a87024f0db9d1033648eee5d0b1c03700d942595f2c187b60f4b4
BLAKE2b-256 checksum
How to use checksums
274619d288e3bdc5ee08d47b3c6431f6b8fe7576955f0e92bfa545ffbe815268
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / splineax_klujax-0.5.0.post7-cp312-cp312-win_amd64.whl

Download URL splineax_klujax-0.5.0.post7-cp312-cp312-win_amd64.whl
Size 231.8 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
973009e3d98f24bcd7324905c6641c245be08cce78fc295649b5a771ba3e7e6a
BLAKE2b-256 checksum
How to use checksums
7f05d896136fd42594033935aeeb24446b0146a118c984bfcd6a00f43c3eba96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / splineax_klujax-0.5.0.post7-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL splineax_klujax-0.5.0.post7-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 3.9 MB
Tags CPython 3.12 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
73ae2b1ad164095f3aa3877a0f21a43256e60a312077618cc5669911753dd2a1
BLAKE2b-256 checksum
How to use checksums
f32f6a64da3e7adef032fc9bad35a63edaa0c22f4a75932953c23aad4314853d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / splineax_klujax-0.5.0.post7-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL splineax_klujax-0.5.0.post7-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 3.8 MB
Tags CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
cffd50bf1c99e9aeff381b538c64295c2c36811382832f0d5fc3db25c31c752c
BLAKE2b-256 checksum
How to use checksums
3be23b053067bead0d2007a0b3bad2276c9d124f92fef84eb61d80414e0cc544
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / splineax_klujax-0.5.0.post7-cp312-cp312-macosx_11_0_arm64.whl

Download URL splineax_klujax-0.5.0.post7-cp312-cp312-macosx_11_0_arm64.whl
Size 310.4 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f2f311004cad534d460ce57feb86c0f7b32d4003b881b2c514967109c95dfd0a
BLAKE2b-256 checksum
How to use checksums
498a51e9f2512ba75663a0d585d306170dd55cf4628c9aff497abfef8baec594
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / splineax_klujax-0.5.0.post7-cp311-cp311-win_arm64.whl

Download URL splineax_klujax-0.5.0.post7-cp311-cp311-win_arm64.whl
Size 216.4 kB
Tags CPython 3.11 Windows ARM64
SHA-256 checksum
How to use checksums
58ea7cf9a2b2c6a4f36bdef05de48dc9180c2814d658d940cbf85ff2638a3bb3
BLAKE2b-256 checksum
How to use checksums
8d001814d3b6388fbb679a2cfb9f36777a0752f315a120b2c7d6c8057291efed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / splineax_klujax-0.5.0.post7-cp311-cp311-win_amd64.whl

Download URL splineax_klujax-0.5.0.post7-cp311-cp311-win_amd64.whl
Size 231.5 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
b766e4070ad4d2ef1a26030602507299950955fbc33fde402b9e0004c04eda3b
BLAKE2b-256 checksum
How to use checksums
431a7781b8a9c7f4a844cca3594f1a1fa581858bab4e3a1bd4705f9205f5ae45
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / splineax_klujax-0.5.0.post7-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL splineax_klujax-0.5.0.post7-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 3.9 MB
Tags CPython 3.11 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
397ea450a685d3dacc220cec062551cdf2a9a39eae8eceb2434061c229ce9dab
BLAKE2b-256 checksum
How to use checksums
45cad923c6963f292f8e70eb0b91a1e5c86a45cf1000ca387f7af91acef9f319
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / splineax_klujax-0.5.0.post7-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL splineax_klujax-0.5.0.post7-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 3.8 MB
Tags CPython 3.11 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
846695c642a66cf58b01e47f7ea7ea62d248900b0602af717124747c270989c2
BLAKE2b-256 checksum
How to use checksums
2490f5c2d092b479ac426a22d13f5ae922d299cc8cffdfbb01a39b59ffa26707
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / splineax_klujax-0.5.0.post7-cp311-cp311-macosx_11_0_arm64.whl

Download URL splineax_klujax-0.5.0.post7-cp311-cp311-macosx_11_0_arm64.whl
Size 310.6 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
83c6aa6dc6b28fa4c5745ab872128bdf7f35cd3b28f66946786b2b59464092a4
BLAKE2b-256 checksum
How to use checksums
2f489749147aa5b38e26112255c7780e0e07316501d19d73b37cac97ae38b11e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page