Skip to main content

canns-lib

CI PyPI version License PyPI - Python Version

DOI arXiv

PyPI Downloads Ask DeepWiki

High-performance computational acceleration library for CANNs (Continuous Attractor Neural Networks), providing optimized Rust implementations for computationally intensive tasks in neuroscience and topological data analysis.

Overview

canns-lib is a modular library designed to provide high-performance computational backends for the CANNS Python package. It currently includes the Ripser module for topological data analysis, with plans for additional modules covering approximate nearest neighbors, dynamics computation, and other performance-critical operations.

Modules

🔬 Ripser - Topological Data Analysis

High-performance implementation of the Ripser algorithm for computing Vietoris-Rips persistence barcodes. Drop-in replacement for ripser.py with identical output (verified at the level of bar counts and per- dimension birth/death values on dense and sparse inputs).

Performance vs ripser.py (v0.9.0)

Measured by benchmarks/ripser/comprehensive_benchmark.py --fast (24 dense point-cloud tests, n ∈ {50, 100, 150, 300}, maxdim ∈ {1, 2}, categories: circle, sphere, torus, random, clusters, grid, swiss_roll, moons, circles). Cross-validated on macOS arm64 and Linux x86_64 (16-core A100 server, RAYON_NUM_THREADS=16).

Platform maxdim=1 maxdim=2 overall median
Linux x86_64 / 16 cores 0.97× 1.58× 1.30×
macOS arm64 (single benchmark) 0.63× 1.10× 0.79×

Headline Linux maxdim=2 result: peak 1.91× on torus n=300. Per-dimension persistence values match ripser.py exactly on both platforms (counts_match=True | birth/death values match=True).

Performance vs ripser.py (v0.8.0 baseline, before this release)

Same harness, same matrices:

Platform v0.8.0 maxdim=1 v0.8.0 maxdim=2 v0.8.0 overall v0.9.0 deltas
Linux x86_64 / 16 cores 0.97× 1.03× 1.03× maxdim=2 +0.55×
macOS arm64 (single benchmark) 0.51× 0.98× 0.70× overall +0.09×, maxdim=2 +0.12×

The dominant end-user win in this release is the shuffle null-model FFI shipped for downstream consumers — see the next section.

Shuffle null-model acceleration (v0.9.0 vs canns<1.2.1 legacy multiprocessing.Pool)

canns_lib._ripser_core.shuffle_null_model is a single Rust+rayon call that replaces the per-shuffle Python multiprocessing.Pool.imap loop in canns.analyzer.data.asa.tda._run_shuffle_analysis (used when TDAConfig.do_shuffle=True).

Measured with canns/scripts/bench_shuffle.py (macOS arm64, maxdim=1, 24-cell matrix T∈{60,300}×N∈{20,40,80}×n_shuffles∈{10,50,200,1000}):

n_shuffles median FFI vs legacy speedup range
10 5 081× 763× – 28 555×
50 2 602× 315× – 15 584×
200 2 017× 243× – 15 961×
1000 1 733× 139× – 16 144×

Aggregate across all 24 cells: FFI 4.5 s vs legacy 2 175 s ≈ 36 min, a 484× total wall-clock ratio. From canns 1.2.1 onwards this is the default behaviour; older canns releases pick up the speedup as soon as they upgrade canns-lib to 0.9.0 (the FFI falls back to the legacy path automatically if missing).

Semantic difference: the FFI computes Euclidean distances on the raw (T, N) spike-train matrix; the legacy multiprocessing.Pool path applies timepoint downsampling, PCA, UMAP denoising, and an nbs distance threshold before ripser. The resulting null-distribution shape will differ even at the same random seed — opt out with use_ffi_shuffle=False if you specifically need the legacy pipeline.

Features

  • Algorithmic improvements: Row-by-row edge generation, cleared coboundary enumeration
  • Memory optimization: Structure-of-Arrays reduction matrix, k-major binomial coefficient table, packed (index, coefficient) EntryT (24 → 16 bytes), GAT-based static-dispatch cofacet enumeration with inline simplex-vertex stack array
  • Parallel processing: Multi-threading with Rayon (enabled by default)
  • Full Compatibility: Drop-in replacement for ripser.py with identical API
  • Multiple Metrics: Support for Euclidean, Manhattan, Cosine, and custom distance metrics
  • Sparse Matrices: Efficient handling of sparse distance matrices
  • Cocycle Computation: Optional computation of representative cocycles
  • Shuffle null-model FFI: single-call parallel Rust path for per-shuffle persistence (when used by canns)

Two experimental paths are kept under env-flag opt-in only: CANNS_RIPSER_USE_LOCKFREE=1 and CANNS_RIPSER_APPARENT=1. Both are correctness-fixed and match ripser.py outputs but are currently net- slower than sequential on this codebase.

🧭 Spatial Navigation (RatInABox parity)

Accelerated reimplementation of RatInABox environments and agents with PyO3/ Rust. Supports solid and periodic boundaries, arbitrary polygons, holes, and thigmotaxis wall-following.

Performance Snapshot

The spatial backend delivers ~700× runtime speedups vs. the pure-Python reference when integrating long trajectories. Benchmarked with benchmarks/spatial/step_scaling_benchmark.py (dt=0.02, repeats=1).

Steps RatInABox Runtime canns-lib Runtime Speedup
10² 0.020 s <0.001 s 477×
10³ 0.190 s <0.001 s 713×
10⁴ 1.928 s 0.003 s 732×
10⁵ 19.481 s 0.027 s 718×
10⁶ 192.775 s 0.266 s 726×

Spatial Runtime Scaling

Spatial Speedup Scaling

Plots and CSV summaries are emitted to benchmarks/spatial/outputs/.

Highlights

  • Full parity with RatInABox API (Environment, Agent, trajectory import/export)
  • Polygon & hole support with adaptive projection and wall vectors
  • Parity comparison tools in example/trajectory_comparison.py
  • Visualization utilities: drop-in replacements for RatInABox's plotting helpers (trajectory, heatmaps, histograms)
  • Benchmark scripts for long-step drift and speedup under benchmarks/spatial/

Visualization Helpers

from canns_lib import spatial

env = spatial.Environment(dimensionality="2D", boundary_conditions="solid")
agent = spatial.Agent(env, rng_seed=2025)

for _ in range(2_000):
    agent.update(dt=0.02)

# Trajectory with RatInABox-style colour fading and agent marker
agent.plot_trajectory(color="changing", colorbar=True)

# Other helpers mirror RatInABox naming
agent.plot_position_heatmap()
agent.plot_histogram_of_speeds()
agent.plot_histogram_of_rotational_velocities()

See example/spatial_plotting_demo.py for a full script that produces the trajectory, heatmap, and histogram figures showcased above.

Drift Velocity Control

Guide agent movement toward target directions while maintaining natural stochastic motion (matches RatInABox API):

# Basic drift usage
agent.update(
    dt=0.02,
    drift_velocity=[0.05, 0.02],  # Target velocity vector
    drift_to_random_strength_ratio=5.0  # Drift strength relative to random motion
)

Parameters:

  • drift_velocity: Target velocity vector (must match environment dimensionality)
  • drift_to_random_strength_ratio: Controls balance between drift and randomness
    • 0.0 = pure random motion (no drift)
    • 1.0 = equal weighting (default)
    • > 1.0 = stronger drift toward target

Use cases: Goal-directed navigation, reinforcement learning, biased exploration.

See example/drift_velocity_demo.py for detailed examples with visualizations.

🚀 Coming Soon

  • Dynamics: High-performance dynamics computation for neural networks
  • And more...

Installation

From PyPI (Recommended)

pip install canns-lib

From Source

git clone https://github.com/Routhleck/canns-lib.git
cd canns-lib
pip install maturin
maturin develop --release

Quick Start

Using the Ripser Module

import numpy as np
from canns_lib.ripser import ripser

# Generate sample data
data = np.random.rand(100, 3)

# Compute persistence diagrams
result = ripser(data, maxdim=2)
diagrams = result['dgms']

print(f"H0: {len(diagrams[0])} features")
print(f"H1: {len(diagrams[1])} features")
print(f"H2: {len(diagrams[2])} features")

Advanced Options

# High-performance computation with progress tracking
result = ripser(
    data,
    maxdim=2,
    thresh=1.0,                    # Distance threshold
    coeff=2,                       # Coefficient field Z/2Z
    do_cocycles=True,              # Compute representative cycles
    verbose=True,                  # Detailed output
    progress_bar=True,             # Show progress
    progress_update_interval=1.0   # Update every second
)

# Access results
diagrams = result['dgms']          # Persistence diagrams
cocycles = result['cocycles']      # Representative cocycles
num_edges = result['num_edges']    # Number of edges in complex

Sparse Matrix Support

from scipy import sparse

# Create sparse distance matrix
row = [0, 1, 2]
col = [1, 2, 0]
data = [1.0, 1.5, 2.0]
sparse_dm = sparse.coo_matrix((data, (row, col)), shape=(3, 3))

# Compute with sparse matrix (automatically detected)
result = ripser(sparse_dm, distance_matrix=True, maxdim=1)

Compatibility

The ripser module maintains 100% API compatibility with ripser.py:

# These work identically
import ripser as original_ripser
from canns_lib.ripser import ripser

result1 = original_ripser.ripser(data, maxdim=2)
result2 = ripser(data, maxdim=2)

# Results are numerically identical
assert np.allclose(result1['dgms'][0], result2['dgms'][0])

Development

Building from Source

# Prerequisites
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
pip install maturin

# Build and install
git clone https://github.com/Routhleck/canns-lib.git
cd canns-lib
maturin develop --release --features parallel

# Run tests
python -m pytest tests/ -v

Running Benchmarks

cd benchmarks
python compare_ripser.py --n-points 100 --maxdim 2 --trials 5

Technical Details

Ripser Module Architecture

  • Dual API paths: High-performance versions and full-featured versions with progress tracking
  • Memory optimization: Structure-of-Arrays layout, intelligent buffer reuse
  • Sparse matrix support: Efficient handling via neighbor intersection algorithms
  • Progress tracking: Built-in progress bars using tqdm when available
  • Parallel processing: Multi-threading with Rayon

Algorithmic Optimizations

  • Dense edge enumeration: O(n²) row-by-row generation vs O(n³) vertex decoding
  • Sparse queries: O(log k) binary search vs O(k) linear scan
  • Cache-friendly data structures: SoA matrix layout, k-major binomial tables
  • Packed simplex entries: (index, coefficient) packed into one 64-bit word, halving DiameterEntryT size from 24 → 16 bytes

License

Licensed under the Apache License, Version 2.0. See LICENSE for details.

Citation

If you use canns-lib in your research, please cite the toolkit paper (which describes both canns and canns-lib):

@misc{he2026canns,
  title        = {CANNs: A Toolkit for Research on Continuous Attractor Neural Networks},
  author       = {He, Sichao and
                  Tuerhong, Aiersi and
                  She, Shangjun and
                  Chu, Tianhao and
                  Wu, Yuling and
                  Zuo, Junfeng and
                  Wu, Si},
  year         = 2026,
  eprint       = {2606.27783},
  archivePrefix = {arXiv},
  primaryClass  = {q-bio.NC},
  doi          = {10.48550/arXiv.2606.27783},
  url          = {https://arxiv.org/abs/2606.27783}
}

Plain text:

He, S., Tuerhong, A., She, S., Chu, T., Wu, Y., Zuo, J., & Wu, S. (2026). CANNs: A Toolkit for Research on Continuous Attractor Neural Networks. arXiv:2606.27783. https://arxiv.org/abs/2606.27783

If you want to cite this Rust backend specifically, you can additionally reference the Zenodo archive:

@software{canns_lib,
  title={canns-lib: High-Performance Computational Acceleration Library for CANNS},
  author={He, Sichao},
  url={https://github.com/Routhleck/canns-lib},
  year={2025}
}

Acknowledgments

Ripser Module

  • Ulrich Bauer: Original Ripser algorithm and C++ implementation
  • Christopher Tralie & Nathaniel Saul: ripser.py Python implementation
  • Rust community: Amazing ecosystem of high-performance libraries

Related Projects

  • Ripser: Original C++ implementation
  • ripser.py: Python bindings for Ripser
  • CANNS: Continuous Attractor Neural Networks
  • scikit-tda: Topological Data Analysis in Python

Release files for canns-lib 0.10.1

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

Source distribution (sdist)

Source distribution for canns-lib 0.10.1
File Size Uploaded
canns_lib-0.10.1.tar.gz 356.5 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for canns-lib 0.10.1
File
canns_lib-0.10.1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
canns_lib-0.10.1-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
canns_lib-0.10.1-cp314-cp314-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ ARM64 Details
canns_lib-0.10.1-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
canns_lib-0.10.1-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details
canns_lib-0.10.1-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
canns_lib-0.10.1-cp314-cp314-macosx_10_15_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.15+ x86-64 Details
canns_lib-0.10.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
canns_lib-0.10.1-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
canns_lib-0.10.1-cp313-cp313-musllinux_1_2_aarch64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ ARM64 Details
canns_lib-0.10.1-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
canns_lib-0.10.1-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details
canns_lib-0.10.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
canns_lib-0.10.1-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
canns_lib-0.10.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
canns_lib-0.10.1-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
canns_lib-0.10.1-cp312-cp312-musllinux_1_2_aarch64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ ARM64 Details
canns_lib-0.10.1-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
canns_lib-0.10.1-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details
canns_lib-0.10.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
canns_lib-0.10.1-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
canns_lib-0.10.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
canns_lib-0.10.1-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
canns_lib-0.10.1-cp311-cp311-musllinux_1_2_aarch64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ ARM64 Details
canns_lib-0.10.1-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
canns_lib-0.10.1-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details
canns_lib-0.10.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
canns_lib-0.10.1-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details

Total release size: 14.8 MB

Release files / canns_lib-0.10.1.tar.gz

Download URL canns_lib-0.10.1.tar.gz
Size 356.5 kB
Tags Source
SHA-256 checksum
How to use checksums
239818a382665257c5f53ad2de82da42aef4450e1ab6831f70b34b6b0ebedcf6
BLAKE2b-256 checksum
How to use checksums
3e4c7428b619fe627db6526be3305057cf9b87ae82dd37b0dcd4ff77b7b84948
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp314-cp314-win_amd64.whl

Download URL canns_lib-0.10.1-cp314-cp314-win_amd64.whl
Size 426.0 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
56615e70801f8bcbbef9355a558e5d65c4db6fd2ba0f18710e6458a3b8682905
BLAKE2b-256 checksum
How to use checksums
f3c4085f80a97d96b3f74c4fdca9b7f0a71a46a650a5bc258fac2eaa9d954b78
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL canns_lib-0.10.1-cp314-cp314-musllinux_1_2_x86_64.whl
Size 619.3 kB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
854aeede6d8119ed8f6de2e56125a23bb5339bd832fa38e9f6980c723b6a8cfd
BLAKE2b-256 checksum
How to use checksums
fca890f06a7909f6c46f6d4c7053670ebff3e253a61872f93ba001881478d4bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp314-cp314-musllinux_1_2_aarch64.whl

Download URL canns_lib-0.10.1-cp314-cp314-musllinux_1_2_aarch64.whl
Size 569.4 kB
Tags CPython 3.14 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
d39fe919b866ca12c2fd03efcad3ddfb99d4c5eeaa03c46849486ed21531f41e
BLAKE2b-256 checksum
How to use checksums
43e4cbe5981744603d76f7a8ec78b00675e87a2e9f4ad8511e3ff8d917cb5bcb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL canns_lib-0.10.1-cp314-cp314-manylinux_2_28_x86_64.whl
Size 536.8 kB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f472d8d48cd2326fb70892d192341c9943b9efe9add55a72add589b5e276c514
BLAKE2b-256 checksum
How to use checksums
6d083515c9d68a21c6ddb1167898a763a20983bddd72f119d950eb7f5625c92a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL canns_lib-0.10.1-cp314-cp314-manylinux_2_28_aarch64.whl
Size 501.5 kB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
0df851fb83239b94da50900bbe2c7eb6c5d7f64aa511d5d47b30a39ff06ed982
BLAKE2b-256 checksum
How to use checksums
cd302eef9d6059bf3814b89189c09c7a58ebd28431e0f47ddd1275b9e440918e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp314-cp314-macosx_11_0_arm64.whl

Download URL canns_lib-0.10.1-cp314-cp314-macosx_11_0_arm64.whl
Size 449.9 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
23beab4de0a06cffb257bc91194938d522c0bb8d93fb6c453f593386c6adecfe
BLAKE2b-256 checksum
How to use checksums
37b9d731da8d0570effb2990b7244bc8799772b9d36389f99664d52efc4bdf8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp314-cp314-macosx_10_15_x86_64.whl

Download URL canns_lib-0.10.1-cp314-cp314-macosx_10_15_x86_64.whl
Size 499.1 kB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
7ec4978619067ba7516fdfff755d6fb28aa0d6628eced78e60aeb351bf842db8
BLAKE2b-256 checksum
How to use checksums
ed2e9fd177d99b80dca80736ac29628588880364e2dffce53e9aec981edda198
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp313-cp313-win_amd64.whl

Download URL canns_lib-0.10.1-cp313-cp313-win_amd64.whl
Size 428.2 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
d5ad9fc6c875fb4fcb63ac3e9ea9df2f91def8c0395c05111be9ecd45097cf16
BLAKE2b-256 checksum
How to use checksums
c2336e374482b715a9084a93d376862ecc3bfa9fa198f1e74728f994af4e86cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL canns_lib-0.10.1-cp313-cp313-musllinux_1_2_x86_64.whl
Size 620.4 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
0d35ef6d19421f19f0f9ab92dd4aea5ab3e41c6596cf45f396a4f03080d312c7
BLAKE2b-256 checksum
How to use checksums
2e721dc43a75bda3bdd232b029b2feb8f1dff94383cd8477a821818fea4e3610
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp313-cp313-musllinux_1_2_aarch64.whl

Download URL canns_lib-0.10.1-cp313-cp313-musllinux_1_2_aarch64.whl
Size 570.0 kB
Tags CPython 3.13 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
cd36e752dc278149a1215b5875749f3514f5ca2ec10cd823aa934da1b52f319f
BLAKE2b-256 checksum
How to use checksums
e80cc989c1f89ec1db12ae77bc4055a6c58886fd7b0227e53a172920fd79523c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL canns_lib-0.10.1-cp313-cp313-manylinux_2_28_x86_64.whl
Size 537.8 kB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
64d7c9c853f864502fd78a9aac22fe5942485849d6d26c0f21d02f0786c0b14b
BLAKE2b-256 checksum
How to use checksums
7bf739ba12c8a4b0627946c2d7a465a7b1d125bb49673cb90588710540edac22
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL canns_lib-0.10.1-cp313-cp313-manylinux_2_28_aarch64.whl
Size 502.2 kB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
18e6116a2451578ec3d6f1789d9268cd15169728e427fc183cd6d1631c940638
BLAKE2b-256 checksum
How to use checksums
9534d00dbe25c8f59baa1889d8ddce70a7e77d30bc449702963eb5f8937a9931
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL canns_lib-0.10.1-cp313-cp313-macosx_11_0_arm64.whl
Size 450.0 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0a8ec71f05c44f5b2553029d047ed9b9f1b84f76e342d4acf8a62f84463f3ba1
BLAKE2b-256 checksum
How to use checksums
9ddf27e0a33eb480d593f077fd4a95499d1d9ec44e261a1ff00729eaa7db39fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp313-cp313-macosx_10_13_x86_64.whl

Download URL canns_lib-0.10.1-cp313-cp313-macosx_10_13_x86_64.whl
Size 499.1 kB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
d93921d90ea373289bf39d1600798c1fef1a7e36c6d0e3a31ce480eb9fb01f0b
BLAKE2b-256 checksum
How to use checksums
bd8b605b9c68dbb36c9257172e62db83f87df5ad504d93de6d1191181fcc5304
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp312-cp312-win_amd64.whl

Download URL canns_lib-0.10.1-cp312-cp312-win_amd64.whl
Size 427.4 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
9b333d1f32a507a4a3804c2ad769512a518a578d92b079c41a9287f469c6818f
BLAKE2b-256 checksum
How to use checksums
9cf25118bb108758839aa1154868a97d9aa1c5b7c6df745985876bda86961b5e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL canns_lib-0.10.1-cp312-cp312-musllinux_1_2_x86_64.whl
Size 619.7 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
1e71d03748171408571c7f1d8c3637056cedb9abc4fe40a6250491bf2e5ec5c1
BLAKE2b-256 checksum
How to use checksums
63835a0434a8f388d95df78c40c21ca70ad2c20bcc76456a732c7e7439dc805b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp312-cp312-musllinux_1_2_aarch64.whl

Download URL canns_lib-0.10.1-cp312-cp312-musllinux_1_2_aarch64.whl
Size 569.3 kB
Tags CPython 3.12 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
b2744957ebb9e82dfae5e838c47434f1adcd25cba80426e2b40a37891a9f49fe
BLAKE2b-256 checksum
How to use checksums
12737f24c0340371ef9c3c28fdfa3fc4e639f1c95d0185cc80ea9c9ecfc23904
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL canns_lib-0.10.1-cp312-cp312-manylinux_2_28_x86_64.whl
Size 537.1 kB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0d10456e35313cd44910ff3458856234ad7e027a7feb9850de480761f7c33ca1
BLAKE2b-256 checksum
How to use checksums
46d4d74c89b65ca793669912be9df3f071cf162f538b481f626aa2635c63c4a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL canns_lib-0.10.1-cp312-cp312-manylinux_2_28_aarch64.whl
Size 501.6 kB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
0dc980c068dd3f708bdcfbeea87e654e0c83e042b5cbf73ba4339cf973ad19b4
BLAKE2b-256 checksum
How to use checksums
bcbb553b20a18863676831884675335dab40e447a1fb39e2f3c0b2f897a5c15d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL canns_lib-0.10.1-cp312-cp312-macosx_11_0_arm64.whl
Size 449.7 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a83f5fca76e3b4635d095faf4a5ede0641ef74d6c05c39244d807ec1327d87ab
BLAKE2b-256 checksum
How to use checksums
31f560e41c7e3c753fa527bb93f2afdd4c52741f249fd4de8d9197ad8c265495
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp312-cp312-macosx_10_13_x86_64.whl

Download URL canns_lib-0.10.1-cp312-cp312-macosx_10_13_x86_64.whl
Size 498.5 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
1250cbe29a277edc28fff82f9f75b456a1a6dfc788357ed5e3275a17a7851433
BLAKE2b-256 checksum
How to use checksums
d95e3ca7c4049ffcd1915d1070a6a1746922d1f479e9d1c3c08175ef84c4e73f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp311-cp311-win_amd64.whl

Download URL canns_lib-0.10.1-cp311-cp311-win_amd64.whl
Size 425.8 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
9ea0e0e10b30333956b4ee053b93785f7f833afdba5704d092a4df537726855d
BLAKE2b-256 checksum
How to use checksums
9a3662e87e8d288c40a4faad5d9f0c6e437fcfe2c59fad6bfb9c97c02a8c17d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL canns_lib-0.10.1-cp311-cp311-musllinux_1_2_x86_64.whl
Size 618.4 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
279ce4ba4f7cb31ccd3e9da43173ff70593d03b9a0e2acf1b164e876d908d7f9
BLAKE2b-256 checksum
How to use checksums
a80d8801d2a03b88ad46af32dbaefc897702045e15d4dba50ce5dbe14f7e41c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp311-cp311-musllinux_1_2_aarch64.whl

Download URL canns_lib-0.10.1-cp311-cp311-musllinux_1_2_aarch64.whl
Size 568.6 kB
Tags CPython 3.11 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
d5138992dd8e744fb5e9a2c7f184a281d92d0e6d4848c53bffe054b13223c95a
BLAKE2b-256 checksum
How to use checksums
6a5fcb59caae6fcc6738803455f5b1973ce514f85c5100d405c3d175fad323d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL canns_lib-0.10.1-cp311-cp311-manylinux_2_28_x86_64.whl
Size 536.0 kB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
bdbc1602ddd87bfd7cc847c80f260b36c394db521dc9b9fcd2bb02bf77cd9db0
BLAKE2b-256 checksum
How to use checksums
00c591b316ab3d524cb7927de405a1dad2add7d058e149f58310b2c23b6e0ec8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp311-cp311-manylinux_2_28_aarch64.whl

Download URL canns_lib-0.10.1-cp311-cp311-manylinux_2_28_aarch64.whl
Size 500.8 kB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
cbe8d5d79c544af0558897f4034d7d796d968ade0f4d079f98cc177616ab5e1c
BLAKE2b-256 checksum
How to use checksums
f03c1f85c128622f224d658b304d10043d0fede0f9dc95bebd77d0b97582b503
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL canns_lib-0.10.1-cp311-cp311-macosx_11_0_arm64.whl
Size 452.4 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8098f20968e32dd76e9207d0d9421ef5e4a9684f455bbfd9ec4eda51cfdcc978
BLAKE2b-256 checksum
How to use checksums
76e1251488fc55080fec0024af241bb7e0b99221812692f01b9c398fa7676dbe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / canns_lib-0.10.1-cp311-cp311-macosx_10_12_x86_64.whl

Download URL canns_lib-0.10.1-cp311-cp311-macosx_10_12_x86_64.whl
Size 501.5 kB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
fbc9f86cd626a9a44bc6614c05c8809c8a20bd7d5668153a1a830b626688de20
BLAKE2b-256 checksum
How to use checksums
5309352f54815ebeec11c1b2323a02f709889ff3e4d6dc2b87d93d1055c3401e
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.10.1 This release

29 release files

0.7.0

22 release files

0.6.5

22 release files

0.6.4

22 release files

0.6.3

22 release files

0.6.2

22 release files

0.6.1

22 release files

0.6.0

22 release files

0.5.0

22 release 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