Skip to main content

KLUJAX

version: 0.5.0.post4

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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

splineax_klujax-0.5.0.post4-cp314-cp314-win_arm64.whl (206.7 kB view details)

Uploaded CPython 3.14Windows ARM64

splineax_klujax-0.5.0.post4-cp314-cp314-win_amd64.whl (221.5 kB view details)

Uploaded CPython 3.14Windows x86-64

splineax_klujax-0.5.0.post4-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.26+ x86-64manylinux: glibc 2.28+ x86-64

splineax_klujax-0.5.0.post4-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (3.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

splineax_klujax-0.5.0.post4-cp314-cp314-macosx_11_0_arm64.whl (290.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

splineax_klujax-0.5.0.post4-cp313-cp313-win_arm64.whl (200.1 kB view details)

Uploaded CPython 3.13Windows ARM64

splineax_klujax-0.5.0.post4-cp313-cp313-win_amd64.whl (216.7 kB view details)

Uploaded CPython 3.13Windows x86-64

splineax_klujax-0.5.0.post4-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl (3.5 MB view details)

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

splineax_klujax-0.5.0.post4-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (3.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

splineax_klujax-0.5.0.post4-cp313-cp313-macosx_11_0_arm64.whl (290.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

splineax_klujax-0.5.0.post4-cp312-cp312-win_arm64.whl (200.0 kB view details)

Uploaded CPython 3.12Windows ARM64

splineax_klujax-0.5.0.post4-cp312-cp312-win_amd64.whl (216.7 kB view details)

Uploaded CPython 3.12Windows x86-64

splineax_klujax-0.5.0.post4-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl (3.5 MB view details)

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

splineax_klujax-0.5.0.post4-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (3.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

splineax_klujax-0.5.0.post4-cp312-cp312-macosx_11_0_arm64.whl (290.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

splineax_klujax-0.5.0.post4-cp311-cp311-win_arm64.whl (201.3 kB view details)

Uploaded CPython 3.11Windows ARM64

splineax_klujax-0.5.0.post4-cp311-cp311-win_amd64.whl (216.3 kB view details)

Uploaded CPython 3.11Windows x86-64

splineax_klujax-0.5.0.post4-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl (3.5 MB view details)

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

splineax_klujax-0.5.0.post4-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (3.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

splineax_klujax-0.5.0.post4-cp311-cp311-macosx_11_0_arm64.whl (290.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file splineax_klujax-0.5.0.post4-cp314-cp314-win_arm64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 fd1f827897f1ac2305ff12bb4a712ebc53d8f9ce48e838a8689606cf393e174f
MD5 7d4bb3f41816d7bdf1f81c0b0c9ad0b5
BLAKE2b-256 1663b1b2fac325ddb2598e26d492b555801c53075e437c80580a332f9ec92ee2

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp314-cp314-win_arm64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

File details

Details for the file splineax_klujax-0.5.0.post4-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 aff454ce4a53fe6e3cec84369098d69d96d9d6c20372a45fffda7762b51fe1ce
MD5 b1c31449b379de21b7cbcd82eec5023e
BLAKE2b-256 e33daead37674ebad8f0ad4235f361723a1b5a147a657bec8c7c89dbdaa7cf11

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp314-cp314-win_amd64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

File details

Details for the file splineax_klujax-0.5.0.post4-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1accf78387e975d5fb13423a9b5898492ab05defc9726d01697316088252426d
MD5 3620306e941d3cb7638256a24a684b00
BLAKE2b-256 2c6ab2ccd492fc4ea154e078db6b6fe68446395fac2d2d6eb9912793dad5dcef

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

File details

Details for the file splineax_klujax-0.5.0.post4-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ddf032bd6b9fba3e5bfda159fd06d1c22ea3382823857adecff85a963fbdf0d4
MD5 f853d97b5f33e602bec7ea0d51ce9bd1
BLAKE2b-256 7e3072d372d5c9a77e1bef85e6b1e8de501c393e4797155af1a76145aed3e278

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

File details

Details for the file splineax_klujax-0.5.0.post4-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fd6371476bfc8a2458e1b0bb2fef422b015d3e8c59ac00c48f8e3085c562803d
MD5 5a430c86a2d0a8e4553a5c759b1cc4e6
BLAKE2b-256 d0154569912259f706a873195b9b92d26c02d434ff7a4b476826b554e502ced3

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

File details

Details for the file splineax_klujax-0.5.0.post4-cp313-cp313-win_arm64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 c793936a696559ffce9e61216ea365d5b2d616db3b6f0ccab753d9958ac5a7ec
MD5 b16668307fc15ad15b5cd6f3c19b7a1d
BLAKE2b-256 22459e0743831da9a3d04cb82ac500d32e6083b267dfdda0fcfb532dd7f2bcab

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp313-cp313-win_arm64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

File details

Details for the file splineax_klujax-0.5.0.post4-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 010130fcc7ca3a28c669cf345af9d054d1fbb34544a14afe646cea7b5c8352de
MD5 a8ebc411da6980fb712d40b265d91aa3
BLAKE2b-256 c47d32cf851bab1a0b904ad0001c89792a60ae0826c2719c9e4c8421f3d84729

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp313-cp313-win_amd64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

File details

Details for the file splineax_klujax-0.5.0.post4-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d68b541119f1d2d907921b6ee30f068d41a8afccf9559070bb17ad5142d8941d
MD5 150b50ef008bfc4df47deb3a496a5e12
BLAKE2b-256 f0c86347da0389acc634646d07f3a9dea152ec563228947f460730b116d9a9ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

File details

Details for the file splineax_klujax-0.5.0.post4-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9d07520b28b587fb42507c8bb2ff23dedd0a50da5dfb07790fa289674b719d5e
MD5 2f923bc2d0d16425c579f84f017abba4
BLAKE2b-256 6852fb0a0488e888b517b4ed0768f61038f90130723123b715de0232e2a5b672

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

File details

Details for the file splineax_klujax-0.5.0.post4-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8ddeb54db2fca108bfb53752d62fae9329463f7087f0405299315e8746a676db
MD5 c0cfa6d951687d4fb78eb9522273aefe
BLAKE2b-256 df351509a63d1c030730340f858f6b9b3ae93f4776d985eb140cd96e280d421e

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

File details

Details for the file splineax_klujax-0.5.0.post4-cp312-cp312-win_arm64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 8a1d842dc65785285bdf7038d6e0698f8960a37454040bfbc36521f9a0c800cf
MD5 2dd8a4775952000f3f67a0d57ad35b99
BLAKE2b-256 fc6d51cb51876dae7e3f40891156c4e9612f5710e7e73c8592a5c19e30dbc319

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp312-cp312-win_arm64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

File details

Details for the file splineax_klujax-0.5.0.post4-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 58f02f612a33b6ebe9bf2f93c6e647a3643c6c25f0a3cfb877042b7069a8ccfd
MD5 756fe1fc1f957dd66f2a1a7be48cc0ff
BLAKE2b-256 c8716a78413bdf1587796b859fb602ab9dfd3afb5f7d30b35aea8116e3954ccc

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp312-cp312-win_amd64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

File details

Details for the file splineax_klujax-0.5.0.post4-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 609859e178004506ded06b432f9e0cfb02dab4f38754281fead09a3554a18cd3
MD5 83d56fe661da902644df4c197950b269
BLAKE2b-256 dced3a95baa9ef765869cb134d60cb8771d29d93c0bf138ee5bac12b14e03322

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

File details

Details for the file splineax_klujax-0.5.0.post4-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c80aa2b11af64625c5d3538e29681ca6f5600f7de05c947e305f65c3824d775f
MD5 949379e12f961c3a0d6aa6ea283d42d3
BLAKE2b-256 d472ddd3c3ae446f5c8b24ed16f17717c2912cc61381bd22950c4f9e50ecc8f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

File details

Details for the file splineax_klujax-0.5.0.post4-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 befe5b8eb59d4ce98edbe1b4f636cf7d897ea8e153dcd8687579c2a6c2cb6efd
MD5 84ad18ee203a0d6759e187a1514cc7db
BLAKE2b-256 81295c530e9730f0526ec14006d3b4bd04f24ffb924c4e5f83b050fb8f2db8fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

File details

Details for the file splineax_klujax-0.5.0.post4-cp311-cp311-win_arm64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 c76219e568507f2cac2f04cd835e0c3bc3c1c337f745e4d93694912d6b31ed31
MD5 ec2c5a2ce214b36714ade43f9ca40740
BLAKE2b-256 c8a46f220840d7f9d8fc2574fb46e8a0c1a7d4115a7d4cba9defa1e413afacf7

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp311-cp311-win_arm64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

File details

Details for the file splineax_klujax-0.5.0.post4-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d941f4b0d9913e6059cc2db74670b9732bf950b8f12bf171549066bbe90ed6fd
MD5 c2758101d19d3d1b8ac5406c0f007d21
BLAKE2b-256 283289019bfc1f89d7c9e9e88529a14b55abae9a03ff9ab0fae739defc2727e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp311-cp311-win_amd64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

File details

Details for the file splineax_klujax-0.5.0.post4-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2a50bcdd760d8928e2eaf848aa16aeb1fb9e72a8ddc1606101a098a60c2b827c
MD5 2a93bc4c2db44f773ee25438df503738
BLAKE2b-256 63262b1131ad27c4784107552dce818674d67b9d952dddd5d7f83d95e0edbc81

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

File details

Details for the file splineax_klujax-0.5.0.post4-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bdaa27e6b1756bbb27b957b1d2694b04511236379433cb85728c71930f7021e2
MD5 bce81bb85399e26cf1375bc70f420ef2
BLAKE2b-256 9919aa2a74f5c23f2564ac748090a9d0cd36fe6d82d1ef8d3107b1b9dbc9596d

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

File details

Details for the file splineax_klujax-0.5.0.post4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for splineax_klujax-0.5.0.post4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 120399807bf8a00926c75eb7c3b1566305d35aef8844ccf446e74d53839344e1
MD5 8e3cbf8d7efbe0c3824b9eba69c95fd4
BLAKE2b-256 f5addba349a00731ffb08c0fc05e1159726fa54cfdeb76631009ac90878756d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for splineax_klujax-0.5.0.post4-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: main.yml on nardi/splineax-klujax

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

Release history Release notifications | RSS feed

0.5.0.post5

20 files

This release

0.5.0.post4 This release

20 files

0.5.0.post3

20 files

0.5.0.post2

20 files

0.5.0.post1

20 files

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