Skip to main content

KLUJAX

version: 0.5.1

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

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 KLUHandleManager that automatically cleans up C++ memory
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)

Lifecycle & Pointer Pitfalls

Because klujax.analyze and klujax.factor generate KLUHandleManager objects which wrap low level C++ pointers, there are strict rules for avoiding memory leaks and segmentation faults.

The "Ghost Pointer" Problem inside JIT:

JAX's jit works by tracing your code. During tracing, Python objects like the KLUHandleManager are converted into symbolic Tracers.

  • Outside JIT: The KLUHandleManager uses RAII (Resource Acquisition Is Initialization). When the Python variable is deleted or goes out of scope, the C++ memory is freed automatically.

  • Inside JIT: If you create a handle (via analyze or factor) inside a JIT-compiled function, the Python manager is "lost" during the conversion to XLA. XLA will allocate the C++ memory at runtime, but it will never call the free function.

The Fix: Explicit Destruction with Dependencies

If you must create a handle inside JIT, you must manually call free_symbolic or free_numeric inside that same function. To prevent the compiler from freeing the pointer before the solve is finished, you must pass the solution as a dependency.

@jax.jit
def dynamic_solve(Ai, Aj, Ax, b):
    # 1. Born inside JIT (No automatic cleanup!)
    sym = klujax.analyze(Ai, Aj, 5)

    # 2. Compute solution
    x = klujax.solve_with_symbol(Ai, Aj, Ax, b, sym)

    # 3. CRITICAL: Force XLA to free 'sym' ONLY AFTER 'x' is ready
    klujax.free_symbolic(sym, dependency=x)

    return x

Summary of Best Practices

  1. Hoist Creations: Always try to call analyze or factor outside of JIT blocks.

  2. One Manager, One Free: Do not manually call free_symbolic(manager) and then let the manager go out of scope; it will attempt a double-free (though the library has safeguards to prevent a crash).

  3. Check for Warnings: If you see a UserWarning: Allocating KLU handle inside JIT, your code is currently leaking memory. Use the dependency pattern shown above to fix it.

Installation

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

pip install 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.

Release files for klujax 0.5.1

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

Total release size: 28.9 MB

Release files / klujax-0.5.1-cp314-cp314-win_arm64.whl

Download URL klujax-0.5.1-cp314-cp314-win_arm64.whl
Size 194.9 kB
Tags CPython 3.14 Windows ARM64
SHA-256 checksum
How to use checksums
f3b8e888c58795ca1500f3fff6baaeb629c64493d4874958c6d4049005af6bc7
BLAKE2b-256 checksum
How to use checksums
9ecdad16bf65b7187b5dbe7ed3732d97b45f8fd30c66d2611c01a65649121ce9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / klujax-0.5.1-cp314-cp314-win_amd64.whl

Download URL klujax-0.5.1-cp314-cp314-win_amd64.whl
Size 212.2 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
98bab473bc20bfb449fc7294a1db853f0af99a760bb2fb13fd7dac8e74d46fa0
BLAKE2b-256 checksum
How to use checksums
b170f06b63de50bedde1ed2c0b30edc91aa40d2dde7dac5082f5cded630685a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / klujax-0.5.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL klujax-0.5.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 3.3 MB
Tags CPython 3.14 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
fc04106be741613c3fb4d7080492f69840db4a974dce397b440aa28d4c7d7c2d
BLAKE2b-256 checksum
How to use checksums
e0562b49fd7a244617b817406f8c8cec129095bd9d22a2dfb7895c9947e4f0c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / klujax-0.5.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL klujax-0.5.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 3.2 MB
Tags CPython 3.14 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
ca944c2add1aa906a835af6b21af51fe17f592282e06ae0a3db2df9e45e36fe3
BLAKE2b-256 checksum
How to use checksums
86c221ba613a68d6b81f70f6376b0a44c0379ef892baab92854b02fe4eadfdbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / klujax-0.5.1-cp314-cp314-macosx_11_0_arm64.whl

Download URL klujax-0.5.1-cp314-cp314-macosx_11_0_arm64.whl
Size 282.6 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bedbdb5f343c2719b66f5e2c7f2c3c1dd85cd295f3e30b7332ad6f7a1af7de8e
BLAKE2b-256 checksum
How to use checksums
85f11d3282784fc70d24f267fbbd903f3fbe1f8d73fa114d7d993021c0254cd6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / klujax-0.5.1-cp313-cp313-win_arm64.whl

Download URL klujax-0.5.1-cp313-cp313-win_arm64.whl
Size 188.5 kB
Tags CPython 3.13 Windows ARM64
SHA-256 checksum
How to use checksums
25ce62b41755cd8d9ac2c4753e95eef639160da65b750357fb0061342c851849
BLAKE2b-256 checksum
How to use checksums
1f9cdf813e918d607ef9ed3dcf47e028682150bb6a10fc38f8b06fe9272c7a4d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / klujax-0.5.1-cp313-cp313-win_amd64.whl

Download URL klujax-0.5.1-cp313-cp313-win_amd64.whl
Size 207.4 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
0328b33393d78468b62620e5a4bf8c5a7297bb4130f3c8528e7c00ac6b450728
BLAKE2b-256 checksum
How to use checksums
90e41e0e5bd40f993eca02ee3f5ecd5b0d3a2f3774d88bed02796f6ada45d1e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / klujax-0.5.1-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL klujax-0.5.1-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 3.3 MB
Tags CPython 3.13 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b1bc710c785a6405175f0d8919499a5af63e3743f12bdffc4c51882072f064b5
BLAKE2b-256 checksum
How to use checksums
cbaae7681a5ff2241036dc66cb3d24d41703c06bce6e9bdb81dfc5e89fa85cae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / klujax-0.5.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL klujax-0.5.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 3.2 MB
Tags CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
b45fd4c52977c6aeb0a8d788b25f6eef107ccd212dfc72928dcbad5438808c41
BLAKE2b-256 checksum
How to use checksums
16aa3ce0d8d255b4bad8c3842e2833c357ba8fa1931ee96267e19a5a76bdee58
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / klujax-0.5.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL klujax-0.5.1-cp313-cp313-macosx_11_0_arm64.whl
Size 282.0 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9516da4f9ff56c45816ab235ebe57e93ab3e34e4078a961f1d2429ad0cde98a4
BLAKE2b-256 checksum
How to use checksums
9e53886ad2e985dc47a340c7f8a9b84e1f878e33d8ca0954a960aeaf627771a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / klujax-0.5.1-cp312-cp312-win_arm64.whl

Download URL klujax-0.5.1-cp312-cp312-win_arm64.whl
Size 188.6 kB
Tags CPython 3.12 Windows ARM64
SHA-256 checksum
How to use checksums
9ea363d36d6447cbd3deaf17b67a1a1aa999a4babf8e2ad8b7ce8938d86db2c6
BLAKE2b-256 checksum
How to use checksums
7c219990edd6f9d5f4177a0a676352a89f518b4de3e62e3ab0b7e62f3bb298b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / klujax-0.5.1-cp312-cp312-win_amd64.whl

Download URL klujax-0.5.1-cp312-cp312-win_amd64.whl
Size 207.3 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
a308de8dcd66a3d751469c5d994a83d4c53a58bff9d4d3a7dd4f571b6c864a41
BLAKE2b-256 checksum
How to use checksums
7be4d564e452c082dcc3828a8a7093488e61e6a94006ec86e0d0362ac3fb4103
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / klujax-0.5.1-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL klujax-0.5.1-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 3.3 MB
Tags CPython 3.12 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
086c33e14ceac2aa469ac704ced124c2f27ae95ac8d25da2c0e7589fea4a9fa8
BLAKE2b-256 checksum
How to use checksums
b69d247098032be68112e9e506bb33498c807f5188d93b3d1463fc2168d4895e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / klujax-0.5.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL klujax-0.5.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 3.2 MB
Tags CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
3f8328fa5e44c4c53a5a4781f2d64c386cd184b819794e41f3dadd7b52df403c
BLAKE2b-256 checksum
How to use checksums
c1255e6572eb071d16e7cbb135b58f77710c319ea12590ac2c8f2a3145039e1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / klujax-0.5.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL klujax-0.5.1-cp312-cp312-macosx_11_0_arm64.whl
Size 282.0 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
042df35d5d40105be08461755e685b3e71c4cc0e88409d9aeab801173e991b86
BLAKE2b-256 checksum
How to use checksums
5a05de72279f5e879b95b9cf9d0763e86001decf85728f9987ab5a0d879bbf10
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / klujax-0.5.1-cp311-cp311-win_arm64.whl

Download URL klujax-0.5.1-cp311-cp311-win_arm64.whl
Size 190.4 kB
Tags CPython 3.11 Windows ARM64
SHA-256 checksum
How to use checksums
8afde159970f0b75b8c1cbd65eb27b7f5ec939ea31e8def69d4d013e1f483f5c
BLAKE2b-256 checksum
How to use checksums
9b3b8d093464710776d3a55468ab3a0b82939e6cecaea63e344b484105959a03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / klujax-0.5.1-cp311-cp311-win_amd64.whl

Download URL klujax-0.5.1-cp311-cp311-win_amd64.whl
Size 207.0 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
e0d194ec61c00bbc0245da1245e7a444f4f9a1faf99e011ec850eb44ced00501
BLAKE2b-256 checksum
How to use checksums
07df58baaa96877439f4294e57a5f51c737237c8d32ab7ddecb18d8a96816e94
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / klujax-0.5.1-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL klujax-0.5.1-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 3.3 MB
Tags CPython 3.11 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
8b8ad1dded69becd9870c7d18d78baee7bcc15596b9d9ebb98d3908056a8aab2
BLAKE2b-256 checksum
How to use checksums
0191ee2d03991f763804c1d7a01cb88a5f9193d4def58ff8729e25e663589d37
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / klujax-0.5.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL klujax-0.5.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 3.2 MB
Tags CPython 3.11 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
2c35523fdc849310de5b77b09151e41b5d0710b843bfd66f134e72209a4745d0
BLAKE2b-256 checksum
How to use checksums
40dd71a0b5381619ca620564fe35fa065f6335fe6080e63abf903f2f14158a80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / klujax-0.5.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL klujax-0.5.1-cp311-cp311-macosx_11_0_arm64.whl
Size 282.0 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1b97659b95b4a11083eb3948e5db003b37092924bfc2c0f4192919e81bc9b2cd
BLAKE2b-256 checksum
How to use checksums
6e2827c9270b98c9e7825dba060622b6994fa5efbef4d806d6d84cd353c41ffb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

0.5.2

20 release files

This release

0.5.1 This release

20 release files

0.5.0

20 release files

0.4.8

20 release files

0.4.7

20 release files

0.4.6

20 release files

0.4.3

20 release files

0.4.0

12 release files

0.3.1

16 release files

0.3.0

16 release files

0.2.9

24 release files

0.2.8

20 release files

0.2.5

52 release files

0.2.4

52 release files

0.2.3

40 release files

0.2.0

9 release files

0.1.4

9 release files

0.1.3

7 release files

0.1.2

7 release files

0.1.1

6 release files

0.0.6

1 release file

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