Skip to main content

KLUJAX

version: 0.5.2

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

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

Download URL klujax-0.5.2-cp314-cp314-win_arm64.whl
Size 194.9 kB
Tags CPython 3.14 Windows ARM64
SHA-256 checksum
How to use checksums
a0458071fd3cc4eac3f0546f3004ca312db916189b2aa5a8b27d14f7dfeec87e
BLAKE2b-256 checksum
How to use checksums
508e3eedd81305cafddb893d7c15ea8f95e5d808eb11d1262580b864ac1fea4e
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.2-cp314-cp314-win_amd64.whl

Download URL klujax-0.5.2-cp314-cp314-win_amd64.whl
Size 212.2 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
f601246644e18ad5457469854201d0364928c9322bd8b5105ec13fd0d35b1f4a
BLAKE2b-256 checksum
How to use checksums
8288a375826aef8084c4fbea1f266cba8362052ffbe3a778a16c93f4af59df1d
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.2-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL klujax-0.5.2-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
81f4ac2041708da76fd7c110373591b1acc3bba368e77146154f938198a8e61a
BLAKE2b-256 checksum
How to use checksums
ae4b6ce769e216c9081929d2fef593c6f538954385dbf9b49521ff806645d367
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.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL klujax-0.5.2-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
30797f94a46ff9d8658381067b48a4488566788c31402a6bbf98b400dcbff05f
BLAKE2b-256 checksum
How to use checksums
7c8515f0da6ca04a8c89da73c313cfb981d2065b4b093c170472761cd2b8d919
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.2-cp314-cp314-macosx_11_0_arm64.whl

Download URL klujax-0.5.2-cp314-cp314-macosx_11_0_arm64.whl
Size 282.7 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d8c733650c81ec6991f73c9601d6d53458307e62b58268ae8d681a962a3b3289
BLAKE2b-256 checksum
How to use checksums
f3d5c2e09175b57c884923cea2e79cdb8cde7e41aff4fdbe0b0616681cbc9b49
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.2-cp313-cp313-win_arm64.whl

Download URL klujax-0.5.2-cp313-cp313-win_arm64.whl
Size 188.5 kB
Tags CPython 3.13 Windows ARM64
SHA-256 checksum
How to use checksums
01fca89ef7bd7892ee7767a02edc5e31090b8e646d02e3842ff7049679d78521
BLAKE2b-256 checksum
How to use checksums
9bf39bf8096e143b97e6302008990f2a93e23eec2a075918954f5913b4fef63e
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.2-cp313-cp313-win_amd64.whl

Download URL klujax-0.5.2-cp313-cp313-win_amd64.whl
Size 207.4 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
2d74e613bfea17f4d9af3019bce41ce11f05cf6137746aa4316e1563ac2f0123
BLAKE2b-256 checksum
How to use checksums
ebb32644cb6290145cdb70e5f14ca9ec4d883e71b4eb0d93590d8f4e03adaffb
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.2-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL klujax-0.5.2-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
81aee0273fd522e9827b202e9c20f6760bb164e107485d9b2b07eff0cfa50a09
BLAKE2b-256 checksum
How to use checksums
dc21bdb731c90dab4ade57fa8fa4df0096175ce418056957d01c4a828da47441
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.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL klujax-0.5.2-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
db7d048b854b5d389b376e5131ac9d4da955e7c1e163dd750bcf6f814bed2b75
BLAKE2b-256 checksum
How to use checksums
1b853c5e65d2625918bb6710841e4e6e1840c3c58e5c66b5fca063fef92bab21
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.2-cp313-cp313-macosx_11_0_arm64.whl

Download URL klujax-0.5.2-cp313-cp313-macosx_11_0_arm64.whl
Size 282.1 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
47651bb69639ed078b88c6dc65590c59ff7229d3f13542a7dc65e353cbc8eb6d
BLAKE2b-256 checksum
How to use checksums
1357d38a27365df11eb37b2855ecb82cacdb90502019f8482662d1502888681d
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.2-cp312-cp312-win_arm64.whl

Download URL klujax-0.5.2-cp312-cp312-win_arm64.whl
Size 188.7 kB
Tags CPython 3.12 Windows ARM64
SHA-256 checksum
How to use checksums
d003e6b2dc099b886436c764a60b73071ea34d0e5ca51c3cfe2d71dda0175e71
BLAKE2b-256 checksum
How to use checksums
1615ff3054e39b5291d891032e343078bd083136b75241bf4122d5bed38e4189
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.2-cp312-cp312-win_amd64.whl

Download URL klujax-0.5.2-cp312-cp312-win_amd64.whl
Size 207.3 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
5af4dda60e6a2fed435c94f6c8ff5f4f56fb550ff071c3201bb07c2a518f61a5
BLAKE2b-256 checksum
How to use checksums
e91397d28a6918542994b17e78fb5dbf7db3405691872ee7b5f47f87f08b5e12
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.2-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL klujax-0.5.2-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
7707d2bfce36892286c3baf00a4a49ad25e8a96873e9ce1b3f2a97be4a851d10
BLAKE2b-256 checksum
How to use checksums
9e408aa88f8a09db1f290c2bc54e168df9db13a1944063f76b1ae47e1959fde2
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.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL klujax-0.5.2-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
3e9a402cea2b690d0b865930fc08b2b6769b9838fde3205ca4c03bc3e1823617
BLAKE2b-256 checksum
How to use checksums
515a86202a2adf9d1470d24b68ef317890295f7da63e773126c1eed1c8aaa732
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.2-cp312-cp312-macosx_11_0_arm64.whl

Download URL klujax-0.5.2-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
5c5016e3ea21244989e593f89da37751400fbcec627ed5670de564a6e82c9680
BLAKE2b-256 checksum
How to use checksums
cf74ad2f7beb6584415f4af19d07679c2bd5cea95b595004632a270fdb281d90
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.2-cp311-cp311-win_arm64.whl

Download URL klujax-0.5.2-cp311-cp311-win_arm64.whl
Size 190.5 kB
Tags CPython 3.11 Windows ARM64
SHA-256 checksum
How to use checksums
76a198f35ad50b4ee170c3d36c6eb672f71a35f743c1b0246096d50134ed735e
BLAKE2b-256 checksum
How to use checksums
070c86f29a15cea5f808ccbb139886ea77bc04a51ed1a131c577f209579394d7
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.2-cp311-cp311-win_amd64.whl

Download URL klujax-0.5.2-cp311-cp311-win_amd64.whl
Size 207.0 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
9e81ed465bdb133bdb08a63e09d0964fd1ae2bae2307ae400ad4660e32ba17c5
BLAKE2b-256 checksum
How to use checksums
b9fa85ae0328c9dcc73ecfe067e83dcf8cee1c9f74f5703b9515be4fd409c95b
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.2-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL klujax-0.5.2-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
aa15cf057d5b2b93a78460fd686c25059861fce6e29518d8af45a408154057a3
BLAKE2b-256 checksum
How to use checksums
cc923b48de2d07844ce477e16380595efe096da6dcf3b2d8de8b35c92f86483d
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.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL klujax-0.5.2-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
69302f86744f769778ee6fc1169e957b8befba76b28576657ffa6d50bd8aadbb
BLAKE2b-256 checksum
How to use checksums
346618b2937274642a6c44b46c2ee35d0f10ad6ae2c53785f1fbd8e282430887
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.2-cp311-cp311-macosx_11_0_arm64.whl

Download URL klujax-0.5.2-cp311-cp311-macosx_11_0_arm64.whl
Size 282.1 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e45b0c72e8aa5e42442805b8d139eb40c7850d638c3605775ceac5838b8e9bd3
BLAKE2b-256 checksum
How to use checksums
c51a8cc726e181ca009b96ab20d4aee6bc0cff6cb15483e9da312bef0ea25778
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

This release

0.5.2 This release

20 release files

0.5.1

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