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

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.0
File Size Uploaded
canns_lib-0.10.0.tar.gz 355.9 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for canns-lib 0.10.0
File
canns_lib-0.10.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
canns_lib-0.10.0-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.0-cp313-cp313-musllinux_1_2_aarch64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ ARM64 Details
canns_lib-0.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
canns_lib-0.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
canns_lib-0.10.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
canns_lib-0.10.0-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
canns_lib-0.10.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
canns_lib-0.10.0-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.0-cp312-cp312-musllinux_1_2_aarch64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ ARM64 Details
canns_lib-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
canns_lib-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
canns_lib-0.10.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
canns_lib-0.10.0-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
canns_lib-0.10.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
canns_lib-0.10.0-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.0-cp311-cp311-musllinux_1_2_aarch64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ ARM64 Details
canns_lib-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
canns_lib-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
canns_lib-0.10.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
canns_lib-0.10.0-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details

Total release size: 11.1 MB

Release files / canns_lib-0.10.0.tar.gz

Download URL canns_lib-0.10.0.tar.gz
Size 355.9 kB
Tags Source
SHA-256 checksum
How to use checksums
28013fbaf97a6774f1a6c2505cae685ab5aa0bfd64c2809383d2b6e85e0d9de9
BLAKE2b-256 checksum
How to use checksums
fae593021ed9af7d5e353e712a43f09990c1384ff6de7f6893753d5b0d593ad8
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.0-cp313-cp313-win_amd64.whl

Download URL canns_lib-0.10.0-cp313-cp313-win_amd64.whl
Size 428.2 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
a0b9cfb3e1fce2f4cc8177a9ddfebef3c99a33908306bb7be28791f9bd330db7
BLAKE2b-256 checksum
How to use checksums
4245fe66b2b557199a38efec61230528e384abf082a16716b9807e8c2f5c5133
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.0-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL canns_lib-0.10.0-cp313-cp313-musllinux_1_2_x86_64.whl
Size 601.9 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
24bbeb0541844a0b10baf2cf3044ef2726caf3465eeeff522cce99503db9c381
BLAKE2b-256 checksum
How to use checksums
82107df4b34dd33b4e260af18f53e6cd3ce685775da52afd2eb243e6ff532b87
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.0-cp313-cp313-musllinux_1_2_aarch64.whl

Download URL canns_lib-0.10.0-cp313-cp313-musllinux_1_2_aarch64.whl
Size 552.0 kB
Tags CPython 3.13 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
cff54cbf2e77de4a428c0e8b651b991762bc739608e527f786078da35aca0ce8
BLAKE2b-256 checksum
How to use checksums
ac4453de65153d09602d12256968b34927551c478364e46c190c5619be520feb
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.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL canns_lib-0.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 537.0 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
c21a35d48cec79b786d08f83fa1a32671f62f959deee00eb0270369d5c5af452
BLAKE2b-256 checksum
How to use checksums
3b93f7f602824875ce77f369d499720b4e42624af13281e22393778e57b5fade
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.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL canns_lib-0.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 500.9 kB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
cd38ff2ace36a2fced9a7ceb2405c71dddfeabe187bd74c7f4bfc6d219273080
BLAKE2b-256 checksum
How to use checksums
0cf93569fb2038110f70be7dc3b227c14c79fa770f6d65c234a2e0ce80bdc306
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.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL canns_lib-0.10.0-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
de3da21220c7c83bc0acfec322d9cc3081a1025e3e415f23064be2f706cbfa78
BLAKE2b-256 checksum
How to use checksums
a779ab15426a0addea72fcc3a30c86aac89fcd5688f050e09fe09e520da3a974
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.0-cp313-cp313-macosx_10_13_x86_64.whl

Download URL canns_lib-0.10.0-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
10e13f18aba5b7c3340717f713652e65ebc90256c6f9810e85d6c3aef3ff50d9
BLAKE2b-256 checksum
How to use checksums
91002c72f018de02ec0295b5a39ab582488b4bd2b05ed1a95cced6628b28a075
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.0-cp312-cp312-win_amd64.whl

Download URL canns_lib-0.10.0-cp312-cp312-win_amd64.whl
Size 427.4 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
be29a7b0ebad1a9712b6821a16590937d43022151ead9400f3285ea88dda2c80
BLAKE2b-256 checksum
How to use checksums
69b10ca8c27152a94d4fbd34d41304140f4f432e03f7c4ba549c6a4bbf77b3bf
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.0-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL canns_lib-0.10.0-cp312-cp312-musllinux_1_2_x86_64.whl
Size 601.2 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
ed3cf275f23cc0826ace1a7c854f70a505aae37ce760e1aa86073bf5501770fe
BLAKE2b-256 checksum
How to use checksums
0dd2f9e4e1e359006c752aaf0f47cca47ad36b291e3f98c2066d4341a8ad6dfc
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.0-cp312-cp312-musllinux_1_2_aarch64.whl

Download URL canns_lib-0.10.0-cp312-cp312-musllinux_1_2_aarch64.whl
Size 551.4 kB
Tags CPython 3.12 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
527ca9f3bf6c1592bf6af6682a16e09167635ff621fdc71b5aff5007a6e5d8e2
BLAKE2b-256 checksum
How to use checksums
0c22b4e4f99e406e32b8c5b9b60d8d5f663ba7e3871f80c811a309f475c56608
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.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL canns_lib-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 536.4 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
578e2cc10e6f02ff0150cf72e4786f890ab9bd13512c416169d09e808403012d
BLAKE2b-256 checksum
How to use checksums
854d3cb65100f2cb8aeb498ea0ad722e7f9a093361fe90d5ff8041443bdb7a80
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.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL canns_lib-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 500.3 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
07d3c6b38c504cfa71d8d1c913451cc4b7480662dcc34ad702f49b8ac3ea3c48
BLAKE2b-256 checksum
How to use checksums
a77ca88685665e512dccc0bfcccca00a0f7b0d195984e5930ebc6019c26ec972
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.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL canns_lib-0.10.0-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
caa57adcf984639839abf86a625bbfeb4f8c0d34c37904e039a62921fa19df05
BLAKE2b-256 checksum
How to use checksums
3c4d14dbd0fb4ddf272253bd9c42c02e40bfa23abce1f2fb18ac80c539af4ead
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.0-cp312-cp312-macosx_10_13_x86_64.whl

Download URL canns_lib-0.10.0-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
ff08230ac6ca8a732080d43942eeb92f5d4d8b18927c14d54285d61919f7cff4
BLAKE2b-256 checksum
How to use checksums
c926055d82c6d0656fcf0fcf209f73264b65f78d698dbfe86a466dc72a685a6b
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.0-cp311-cp311-win_amd64.whl

Download URL canns_lib-0.10.0-cp311-cp311-win_amd64.whl
Size 425.9 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
ef6a4f83c1c62e3a56c2bf29b0d6006c4eb5caf046ad9738774a6cfa850b717e
BLAKE2b-256 checksum
How to use checksums
2f0eb022be467ccb71ceba06ae0c6c9f20b649458399a6ac9dcf0d28a41887da
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.0-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL canns_lib-0.10.0-cp311-cp311-musllinux_1_2_x86_64.whl
Size 599.9 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
6a295bdc986b5203fcf59fe5b15379902dd35b4a130d4fce7019a75f38aaf794
BLAKE2b-256 checksum
How to use checksums
da90a4928ec4863caf4faa74be94118dbb611d9a459b094f8aa30e595521dbb3
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.0-cp311-cp311-musllinux_1_2_aarch64.whl

Download URL canns_lib-0.10.0-cp311-cp311-musllinux_1_2_aarch64.whl
Size 550.6 kB
Tags CPython 3.11 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
8c01b51740dab859e1fd703ac7cb7223a3b544e2a0ba3958d048ef8a90f7362f
BLAKE2b-256 checksum
How to use checksums
cdab8df7675f52ecddf8a043281cf31d2628c2d4515a718916c5bbd77e73d20b
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.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL canns_lib-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 535.0 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d99709db9742102a8ed09a0c1d2015bc3626b7f56fc4e49c54e56ef2694791bd
BLAKE2b-256 checksum
How to use checksums
151cdee14213ac83091f8b18c90dbbf455b3edfb63fa0533bec360bb2e8b56db
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.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL canns_lib-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 499.2 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
bbc5f82329cad44cb18ab9184d2142768fc48f47e856f1d7fa9d580786651108
BLAKE2b-256 checksum
How to use checksums
303feee2b532a1b8261ca2ee4d53eb8930f760283d50685b4672517e734b9ef6
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.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL canns_lib-0.10.0-cp311-cp311-macosx_11_0_arm64.whl
Size 452.3 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
54bdaa743d6f98fc748de446b12b37d88ed029279453ec46b85b0d12cd9d2568
BLAKE2b-256 checksum
How to use checksums
ff679723e51b8d45871a2bcb8dd712c40a50206b1c549b09bcb2c6d10c95fdfe
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.0-cp311-cp311-macosx_10_12_x86_64.whl

Download URL canns_lib-0.10.0-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
bd89d5a226cc4c492f1fd6a8ded7c89e301083ba3664c0196945167a4e3277e6
BLAKE2b-256 checksum
How to use checksums
cf7a03499c168de4dd9ab030429cb727799ea51ca1f5b415d9f4654a155b4ac1
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.0 This release

22 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