Skip to main content

KLUJAX

version: 0.5.0.post6

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.post6

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.post6
File
splineax_klujax-0.5.0.post6-cp314-cp314-win_arm64.whl CPython 3.14 CPython 3.14 Windows ARM64 Details
splineax_klujax-0.5.0.post6-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
splineax_klujax-0.5.0.post6-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.26+ x86-64, Linux glibc 2.28+ x86-64 Details
splineax_klujax-0.5.0.post6-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
splineax_klujax-0.5.0.post6-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
splineax_klujax-0.5.0.post6-cp313-cp313-win_arm64.whl CPython 3.13 CPython 3.13 Windows ARM64 Details
splineax_klujax-0.5.0.post6-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
splineax_klujax-0.5.0.post6-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.26+ x86-64, Linux glibc 2.28+ x86-64 Details
splineax_klujax-0.5.0.post6-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.post6-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
splineax_klujax-0.5.0.post6-cp312-cp312-win_arm64.whl CPython 3.12 CPython 3.12 Windows ARM64 Details
splineax_klujax-0.5.0.post6-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
splineax_klujax-0.5.0.post6-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.post6-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
splineax_klujax-0.5.0.post6-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
splineax_klujax-0.5.0.post6-cp311-cp311-win_arm64.whl CPython 3.11 CPython 3.11 Windows ARM64 Details
splineax_klujax-0.5.0.post6-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
splineax_klujax-0.5.0.post6-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.post6-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
splineax_klujax-0.5.0.post6-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details

Total release size: 30.7 MB

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

Download URL splineax_klujax-0.5.0.post6-cp314-cp314-win_arm64.whl
Size 206.7 kB
Tags CPython 3.14 Windows ARM64
SHA-256 checksum
How to use checksums
a3e77aa89de479cccaa22393f3c89b20cadfd86a8563e2a04458217577e92387
BLAKE2b-256 checksum
How to use checksums
2c71463e6174eb2f9547af52d4e0317ca9eaa9d879f64920e9ec446458e059f6
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 15, 2026.

Transparency log

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

Download URL splineax_klujax-0.5.0.post6-cp314-cp314-win_amd64.whl
Size 221.5 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
9f2b99b40a53e0bc95d2bd43d1d66e3b1939c82781fc9df482fbc29bfa4a30e9
BLAKE2b-256 checksum
How to use checksums
724f1691a705536bb0ca79491f686503800a11c4d3b62a9354b163e4e0cc85d9
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 15, 2026.

Transparency log

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

Download URL splineax_klujax-0.5.0.post6-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 3.5 MB
Tags CPython 3.14 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
11e7881eb26582d646344f88355b61ecfe08d76874c7dd4807b43064935d5c8e
BLAKE2b-256 checksum
How to use checksums
e1606ff318c9196335b572c33b7d3daacce01797dbef74f32e0368ee3faeeab7
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 15, 2026.

Transparency log

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

Download URL splineax_klujax-0.5.0.post6-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 3.4 MB
Tags CPython 3.14 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
cb47318674223b6be9185d078f9d81146a9af6549ec5eae455a8caed79984a29
BLAKE2b-256 checksum
How to use checksums
f7d9c12181ed07081cccf079bfeb14f8a02af3ffefb38e46d527b0dd44f93aef
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 15, 2026.

Transparency log

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

Download URL splineax_klujax-0.5.0.post6-cp314-cp314-macosx_11_0_arm64.whl
Size 290.8 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6c639da4b0b58a8e3012ac3955dbb62cb58b3aec6fb891d000379db41c849cbe
BLAKE2b-256 checksum
How to use checksums
9d9a22c5249add7e16b73d38dffe0668fab732fc263c5dc6f20f6ff3a5416c2a
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 15, 2026.

Transparency log

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

Download URL splineax_klujax-0.5.0.post6-cp313-cp313-win_arm64.whl
Size 200.1 kB
Tags CPython 3.13 Windows ARM64
SHA-256 checksum
How to use checksums
5474f593b15742ccbfd5bd0c7442fec537a4c4deb793cd88eb7b3166cd719f75
BLAKE2b-256 checksum
How to use checksums
4b55071428c146f589fc106457fd5f04e9ff77811665f25ba75618c4d60584d9
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 15, 2026.

Transparency log

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

Download URL splineax_klujax-0.5.0.post6-cp313-cp313-win_amd64.whl
Size 216.7 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
a8a04339c87f32d6a3a5a2cb650df880051fd5a7ced3e17ee54032113570b2b5
BLAKE2b-256 checksum
How to use checksums
da667263e329f676aa2a6051e278f52b514ab024d8e1b0b1264c0e135c9b876c
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 15, 2026.

Transparency log

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

Download URL splineax_klujax-0.5.0.post6-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 3.5 MB
Tags CPython 3.13 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b5ea5f61604290f24f32f528916151dd2381146c8fee6370c5dc2cffec8a2139
BLAKE2b-256 checksum
How to use checksums
29af60ba39f54184dd30b940a28122a7983a102eec3841083bd741c1557addcf
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 15, 2026.

Transparency log

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

Download URL splineax_klujax-0.5.0.post6-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 3.4 MB
Tags CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
dce016d3054af33b77a245752ae8b91aec468849ee500f440adbb2a34b068294
BLAKE2b-256 checksum
How to use checksums
9ab3611b61f92545c614444f3e750022f43edad489f0a1c1893de7bfffbc8d6c
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 15, 2026.

Transparency log

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

Download URL splineax_klujax-0.5.0.post6-cp313-cp313-macosx_11_0_arm64.whl
Size 290.5 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7f915bcd4afd20a59cfababcd30ea8b271920543d751b79786f4b90c7d7ad339
BLAKE2b-256 checksum
How to use checksums
f8f4d6787951db09d7b1b3e34c68379b5b5a35ab6354e0a86d3c737d7513adf8
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 15, 2026.

Transparency log

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

Download URL splineax_klujax-0.5.0.post6-cp312-cp312-win_arm64.whl
Size 200.0 kB
Tags CPython 3.12 Windows ARM64
SHA-256 checksum
How to use checksums
910494fa75c298cfc7aaad63c0016d3b2b1934e80301e2c9c3a953448e597ac7
BLAKE2b-256 checksum
How to use checksums
b4c92e1dfc648329ef58b396521e72dfa2055952273c9bfc38fb4a690be31f11
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 15, 2026.

Transparency log

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

Download URL splineax_klujax-0.5.0.post6-cp312-cp312-win_amd64.whl
Size 216.7 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
801c43cd848e56e57d520f3de8281c3e47b2baf82b893c89aebd972494da56b2
BLAKE2b-256 checksum
How to use checksums
671ecf45c7d702b674c700c00cd3b443c5fdaa865c5f838d4e156234623f9823
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 15, 2026.

Transparency log

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

Download URL splineax_klujax-0.5.0.post6-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 3.5 MB
Tags CPython 3.12 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
93310de9d9f8803bb324987228144beb5272c2c9bac3e056fcadf1b17bf84cf4
BLAKE2b-256 checksum
How to use checksums
06e7aa05928c21f9fc22fc8db4514e2e95794243b82005c501507d18ac980a0b
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 15, 2026.

Transparency log

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

Download URL splineax_klujax-0.5.0.post6-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 3.4 MB
Tags CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
f5f53491f500f93241da82d695957c5b6cc1b7d703df005b3a6e6d2d09c01e6b
BLAKE2b-256 checksum
How to use checksums
962c790e1161286cd8441685c262fd95f6e4575b0280ca6f30b75a7b7262d737
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 15, 2026.

Transparency log

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

Download URL splineax_klujax-0.5.0.post6-cp312-cp312-macosx_11_0_arm64.whl
Size 290.4 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c1b87e3f31132e3b18c7f092883833913197f6578de358231d7193933568197d
BLAKE2b-256 checksum
How to use checksums
adfe180682270fe08bb955b964a32f7bebe79667193afed377e8de3158750a67
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 15, 2026.

Transparency log

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

Download URL splineax_klujax-0.5.0.post6-cp311-cp311-win_arm64.whl
Size 201.3 kB
Tags CPython 3.11 Windows ARM64
SHA-256 checksum
How to use checksums
d70de2c278d5a32edc4703d7283dcc613428c954bff51f74a01304eea11237c8
BLAKE2b-256 checksum
How to use checksums
e10a1c248a0834059cc38a6bab53ac8550b644e89d872e92f2e3cdcf0474be67
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 15, 2026.

Transparency log

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

Download URL splineax_klujax-0.5.0.post6-cp311-cp311-win_amd64.whl
Size 216.3 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
5837b4cfa20f1dd8ffc0c3aeb5556ecf8b407cc6ca71c8116d7e9e5967e8d844
BLAKE2b-256 checksum
How to use checksums
92022c84cbb76ffd67bed55579ce7e921a0769796bdf8a251889fba8edeab07e
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 15, 2026.

Transparency log

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

Download URL splineax_klujax-0.5.0.post6-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 3.5 MB
Tags CPython 3.11 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6ff9cf22ce834faf1fc05237985a6dcbe0e5b1671fbf5102d68914b909d17cfa
BLAKE2b-256 checksum
How to use checksums
1e9ee58ae09dc8a3d5dbbe33e2a994cc15d2abe531b48619e03701a53f749112
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 15, 2026.

Transparency log

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

Download URL splineax_klujax-0.5.0.post6-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 3.4 MB
Tags CPython 3.11 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
31b460b940cab914c13689726b829963510d57fa715acfaf3f784f8ac03fd781
BLAKE2b-256 checksum
How to use checksums
11fb69aaa8f2e8c666dab5dee252d20cb61faae61ee3aa7417b58217a308356c
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 15, 2026.

Transparency log

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

Download URL splineax_klujax-0.5.0.post6-cp311-cp311-macosx_11_0_arm64.whl
Size 290.9 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c742317f8cb5cdaf2c1966a8b067fa596945181ce804693594da0c4b01fa6eb8
BLAKE2b-256 checksum
How to use checksums
13958b459c9923b329af7422a3a6d3207f2a56755455bae044db403abd3d402f
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 15, 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