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

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

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.2
File Size Uploaded
canns_lib-0.10.2.tar.gz 358.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for canns-lib 0.10.2
File
canns_lib-0.10.2-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
canns_lib-0.10.2-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.2-cp314-cp314-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ ARM64 Details
canns_lib-0.10.2-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.2-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details
canns_lib-0.10.2-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
canns_lib-0.10.2-cp314-cp314-macosx_10_15_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.15+ x86-64 Details
canns_lib-0.10.2-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
canns_lib-0.10.2-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.2-cp313-cp313-musllinux_1_2_aarch64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ ARM64 Details
canns_lib-0.10.2-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.2-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details
canns_lib-0.10.2-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
canns_lib-0.10.2-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
canns_lib-0.10.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
canns_lib-0.10.2-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.2-cp312-cp312-musllinux_1_2_aarch64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ ARM64 Details
canns_lib-0.10.2-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.2-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details
canns_lib-0.10.2-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
canns_lib-0.10.2-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
canns_lib-0.10.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
canns_lib-0.10.2-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.2-cp311-cp311-musllinux_1_2_aarch64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ ARM64 Details
canns_lib-0.10.2-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.2-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details
canns_lib-0.10.2-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
canns_lib-0.10.2-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details

Total release size: 13.2 MB

Release files / canns_lib-0.10.2.tar.gz

Download URL canns_lib-0.10.2.tar.gz
Size 358.1 kB
Tags Source
SHA-256 checksum
How to use checksums
b2a5bd0bda72ab7d1a3cbe79b6c286b44b4ce7d344708f00535d4c414ffa7a95
BLAKE2b-256 checksum
How to use checksums
1c292d42e2b17c1bdcda5303b4a5aa4f212d5ed390a0e9a50ab9889d5d3603f4
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.2-cp314-cp314-win_amd64.whl

Download URL canns_lib-0.10.2-cp314-cp314-win_amd64.whl
Size 374.0 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
246d0e50161d87bb57bff43c0793006813f6fdfc28d85fc5be3796861fcf8548
BLAKE2b-256 checksum
How to use checksums
de65005a7817bb296461c8989816f2b1b2bb2bae71205afc61a578ddad22d9d4
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.2-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL canns_lib-0.10.2-cp314-cp314-musllinux_1_2_x86_64.whl
Size 560.6 kB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
65cf8a438846c2abec1258dd0b5df19f67d9806a54263dc91f8d0814229989b8
BLAKE2b-256 checksum
How to use checksums
ad388b31fba9a733383e16502ac2411efe90a51d760c43f1eb3274c627056dcd
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.2-cp314-cp314-musllinux_1_2_aarch64.whl

Download URL canns_lib-0.10.2-cp314-cp314-musllinux_1_2_aarch64.whl
Size 508.0 kB
Tags CPython 3.14 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
79f7103a3fded0bbb32f2de6024e681906f33bb0371856ff746a0aec15379a68
BLAKE2b-256 checksum
How to use checksums
2db6b45f88155c6f7c4e0fb469e46af47e00f697c6264f9509f003b897a7ae1c
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.2-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL canns_lib-0.10.2-cp314-cp314-manylinux_2_28_x86_64.whl
Size 479.4 kB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e1a866d8c9373077f51bd06d4731adff9655a150ff827b3033986fa8d10773e0
BLAKE2b-256 checksum
How to use checksums
6677a1e0a630fca648c4b125aa8a706db5668e839796e14961381efed86eedf5
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.2-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL canns_lib-0.10.2-cp314-cp314-manylinux_2_28_aarch64.whl
Size 441.9 kB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
c8a1daeb209ecd11abe115d2f194178536c37c5b62bda6258ced03ea66b92f90
BLAKE2b-256 checksum
How to use checksums
685b269c00c917af02fc156677d1956b1a74a9904330b54cf6257314005190f8
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.2-cp314-cp314-macosx_11_0_arm64.whl

Download URL canns_lib-0.10.2-cp314-cp314-macosx_11_0_arm64.whl
Size 401.9 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
665208873d5ffc2ca63b63c40e1c2e932422930069be681b7b10010377faf7f1
BLAKE2b-256 checksum
How to use checksums
a772052c0a02c8dfe3959051150ef10ce3942dcb8bc46357d9f5875605e17c7e
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.2-cp314-cp314-macosx_10_15_x86_64.whl

Download URL canns_lib-0.10.2-cp314-cp314-macosx_10_15_x86_64.whl
Size 447.1 kB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
6b55947ee34dbf641c448d052389ce69af7a5d56e59a2df41c41d446c5f29de5
BLAKE2b-256 checksum
How to use checksums
8318df28274a36fef6cdcf5bb4a19ae0153f837e2454568c5103d1da95a1638e
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.2-cp313-cp313-win_amd64.whl

Download URL canns_lib-0.10.2-cp313-cp313-win_amd64.whl
Size 375.8 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
6094ee4d865958a5b74f122b0659063b1e690b18c65c9f996434111d9876a62c
BLAKE2b-256 checksum
How to use checksums
48c895b8d38b61a75936bd3aace51ea41aab47092c992e5822073c0cdecb8746
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.2-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL canns_lib-0.10.2-cp313-cp313-musllinux_1_2_x86_64.whl
Size 561.6 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
408e14306c5bcb030ddcd9a2086ae42526962a623b6df966343fa5dfc1566dc4
BLAKE2b-256 checksum
How to use checksums
35a14ef799b6736532b5be68057b0245bcb95b3616110f8d54689bbce12aed74
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.2-cp313-cp313-musllinux_1_2_aarch64.whl

Download URL canns_lib-0.10.2-cp313-cp313-musllinux_1_2_aarch64.whl
Size 508.3 kB
Tags CPython 3.13 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
003789736ab20f23d658f6f86a508e33e42b50fb7103b2dae4a9987ac8066183
BLAKE2b-256 checksum
How to use checksums
3ff3900f3fad8925b9cac53bfde60ac8bd78809b1528af79ad6efc4baac45a10
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.2-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL canns_lib-0.10.2-cp313-cp313-manylinux_2_28_x86_64.whl
Size 480.5 kB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
83d01e7fb08ffd1d4f286f257a71125fa41801ac3ef9982c81bff094fd7ad570
BLAKE2b-256 checksum
How to use checksums
471ff3966878d8078bed465548eda019e52b57d51cf4b6043be8cf3406fb875a
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.2-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL canns_lib-0.10.2-cp313-cp313-manylinux_2_28_aarch64.whl
Size 443.0 kB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
e137124c5084478f3c4a4a3cda26159104dbfa47611b2cbea5d94ed4af5d8859
BLAKE2b-256 checksum
How to use checksums
388b6feb31644393d2e388fcc6f0668eb36b0d8efcd604f5a7dd98e557c6f4ac
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.2-cp313-cp313-macosx_11_0_arm64.whl

Download URL canns_lib-0.10.2-cp313-cp313-macosx_11_0_arm64.whl
Size 402.0 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8d249178486ac160127584e4e7da76a14cd7a2748e99dde61358d416690a8f01
BLAKE2b-256 checksum
How to use checksums
3e86f3a9f200dd8673a9e5bd9184c1ea11fa764a0aa25cc4d3dabf40578fc763
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.2-cp313-cp313-macosx_10_13_x86_64.whl

Download URL canns_lib-0.10.2-cp313-cp313-macosx_10_13_x86_64.whl
Size 447.0 kB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
5889042980f21074cf70657ccbecb408628bdbcff882e7484942f8beb8273bcc
BLAKE2b-256 checksum
How to use checksums
66a182e6cfd08721ce176b99c4c23583d3f18459b38e914a9e9a36ad1aac01ec
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.2-cp312-cp312-win_amd64.whl

Download URL canns_lib-0.10.2-cp312-cp312-win_amd64.whl
Size 375.8 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
4ca4fb70e3ac3c83075f360bd9ac58d3856f78b4dcb7c59d607e83d3ea766163
BLAKE2b-256 checksum
How to use checksums
0f201ea7708579e9e571021e1a3ead05277050952fa69b73df62fb18ae0d0057
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.2-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL canns_lib-0.10.2-cp312-cp312-musllinux_1_2_x86_64.whl
Size 561.3 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
a3054bcc0b70e0d95dbe590202f1b23fa5ad1f0dcdf4d00b89c5dd3d2aa44cda
BLAKE2b-256 checksum
How to use checksums
73aaa1fbce5491e97b19934baaaa57b359cd6d8b455a41988d82f1e0252f9ba1
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.2-cp312-cp312-musllinux_1_2_aarch64.whl

Download URL canns_lib-0.10.2-cp312-cp312-musllinux_1_2_aarch64.whl
Size 508.0 kB
Tags CPython 3.12 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
926d1a78a1d4cd13aea7e2ff527cbc30531d0d3c9b899f6b0cc6f81624c75c4f
BLAKE2b-256 checksum
How to use checksums
d995525ff1f2e0e8413809a4d316f368ffd81163ab8e853f31550b1c1968f3f4
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.2-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL canns_lib-0.10.2-cp312-cp312-manylinux_2_28_x86_64.whl
Size 480.2 kB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
2f64a646fa329a6483623d9889dfc6822b63511c25c538695a1e52339f587255
BLAKE2b-256 checksum
How to use checksums
2df798f1757431d674664a021e31b2b20b50967a6ad2d20b1b28862e7f575ffe
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.2-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL canns_lib-0.10.2-cp312-cp312-manylinux_2_28_aarch64.whl
Size 441.8 kB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
72364e4e64db62342155d521be862ceeb84ce73780f8cf98ee54a85802746531
BLAKE2b-256 checksum
How to use checksums
c35a2a09bb25060a71d85d6838f5cc525795687d6d214c831a1c80bfe5e0b412
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.2-cp312-cp312-macosx_11_0_arm64.whl

Download URL canns_lib-0.10.2-cp312-cp312-macosx_11_0_arm64.whl
Size 401.7 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2dfbac7ed1cb1aa0c66a68ee93f4d0d10aee0a60bb3a77b6713e14da5e8021ea
BLAKE2b-256 checksum
How to use checksums
9717b255794712ded745178126f4d60b569cb13e6892fb7696eaa0d16caa4625
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.2-cp312-cp312-macosx_10_13_x86_64.whl

Download URL canns_lib-0.10.2-cp312-cp312-macosx_10_13_x86_64.whl
Size 446.6 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
df71b692ea100eb8d96fda2a35a1b3fb22762243a8b367448a347ea18da5dd68
BLAKE2b-256 checksum
How to use checksums
78ffc0818fc331e02c056ce4a769a167c8007841cf97b52e08d1debff209f759
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.2-cp311-cp311-win_amd64.whl

Download URL canns_lib-0.10.2-cp311-cp311-win_amd64.whl
Size 374.9 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
c8abfee9e196a92052a7127f6a73c469ee9372e32c3a091af351cf199759ccdd
BLAKE2b-256 checksum
How to use checksums
3e15bcb27db7ee45385ce9ae20cb16811e5daca3d6abdb35a75698a748347d6f
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.2-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL canns_lib-0.10.2-cp311-cp311-musllinux_1_2_x86_64.whl
Size 559.0 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
58203510a1f5113a6d2b9428e9933d35f97cf69f4905bb8814d44b85882bd61b
BLAKE2b-256 checksum
How to use checksums
dfe78ff966df238a895c83e9e6414de5e00d19b8d104e41699ea82c8613f5a76
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.2-cp311-cp311-musllinux_1_2_aarch64.whl

Download URL canns_lib-0.10.2-cp311-cp311-musllinux_1_2_aarch64.whl
Size 507.3 kB
Tags CPython 3.11 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
db463307ca8bcbc57b26a7a3ba6b43237e34806a1b39ce4cad28bb85b77f97ce
BLAKE2b-256 checksum
How to use checksums
d3396515e1b03941a8389726c8415e6d52131d1c4471af7e81eb1b07dcdaccfb
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.2-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL canns_lib-0.10.2-cp311-cp311-manylinux_2_28_x86_64.whl
Size 478.0 kB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c6bdc29b5ca45c10b991b5e0a59e893343722d7931f0b0db4ac73b568e10250c
BLAKE2b-256 checksum
How to use checksums
cb5d087b1dfa3131deb97d196976873d49dca62a4d04a170a0a94466f99469ee
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.2-cp311-cp311-manylinux_2_28_aarch64.whl

Download URL canns_lib-0.10.2-cp311-cp311-manylinux_2_28_aarch64.whl
Size 441.2 kB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
66e4d454bd0fdc88fdc189f05b8b9de00f63c6d26477888770d10c98c0b7a189
BLAKE2b-256 checksum
How to use checksums
2fba141006960a9bb6b5b9c0d5dbd2e9c2d8da24162f163b1487c8820ecf2623
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.2-cp311-cp311-macosx_11_0_arm64.whl

Download URL canns_lib-0.10.2-cp311-cp311-macosx_11_0_arm64.whl
Size 404.0 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f05264f76cf0a08e5696bb28bffb6d6f39ec063fa08fb7f7f0e2db103590af81
BLAKE2b-256 checksum
How to use checksums
2629c5808ac385395f33cc1f094bc654ea60c16712414b658a8e4789ebc1eb92
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.2-cp311-cp311-macosx_10_12_x86_64.whl

Download URL canns_lib-0.10.2-cp311-cp311-macosx_10_12_x86_64.whl
Size 449.4 kB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
f5b98eee9a9b7fa0cdd10882545734cef443d70fa11241a27136fb659af3ba4b
BLAKE2b-256 checksum
How to use checksums
a6024cdd084a19e6ef91112bba84ffcbf67eebcbb52584ddc89f6a87c843e388
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.2 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