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×

Shuffle null models with explicit parameters

canns_lib.ripser.shuffle_null_model independently circular-shifts each feature column, computes distances between rows, and runs Ripser. Its metric and persistence options are explicit:

from canns_lib.ripser import ripser, shuffle_null_model

# X has shape (timepoints, features).
real = ripser(X, metric="cosine", maxdim=2, coeff=47)
null = shuffle_null_model(
    X,
    num_shuffles=100,
    metric="cosine",
    maxdim=2,
    coeff=47,
    seed=17,
)

This generic feature-space null does not perform the complete ASA analysis. The companion CANNs PR #103 keeps activity selection, standardization, PCA, density selection and graph construction in CANNs, configured through TDAConfig and rerun each round. Do not substitute a shuffle of an already processed point cloud for that full workflow. Independent column shifts also do not define a valid null for a precomputed distance matrix, so distance_matrix=True is rejected.

Explicit shifts support exact replay; generate_offsets exposes the same offset generation for application workflows. max_workers=1 is the default, with bounded thread concurrency available. Failed rounds raise with replay information instead of contributing zero or disappearing from the null.

The default result is a per-dimension list of maximum finite lifetimes. return_details=True also returns shifts, essential-class counts and complete diagrams. Finite maxima alone do not test essential classes.

The previous private _ripser_core.shuffle_null_model computed a different neuron-distance null and has been removed; calls now raise a migration error. Its timing ratios against the full ASA workflow were not measurements of the same analysis and are no longer presented as acceleration results. Downstream ASA callers must use the coordinated CANNs update.

The public Rust fuzzy_union kernel can be used within that pipeline to build an owned dense float64 adjacency matrix without fixing its scientific parameters. See the shuffle API, migration and kernel guide for contracts, memory costs and examples. The generic shuffle API alone does not establish agreement with the ASA workflow or any paper.

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
  • Configurable feature-space shuffle: explicit metric and persistence parameters, reproducible per-feature shifts, bounded concurrency and explicit failures; optional Rust fuzzy_union for dense adjacency construction (API guide)

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.11.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.11.0
File Size Uploaded
canns_lib-0.11.0.tar.gz 382.1 kB Details

Built distributions (wheels)

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

Total release size: 13.4 MB

Release files / canns_lib-0.11.0.tar.gz

Download URL canns_lib-0.11.0.tar.gz
Size 382.1 kB
Tags Source
SHA-256 checksum
How to use checksums
7ce77f470296607a1f062c12236b60b0a78e159755c758e8103f92b568c74914
BLAKE2b-256 checksum
How to use checksums
1b05989a8019e651073e172ec4c664a65f72b2420e824c3d4ec573107f65bc38
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.11.0-cp314-cp314-win_amd64.whl

Download URL canns_lib-0.11.0-cp314-cp314-win_amd64.whl
Size 381.1 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
23e72fe2ddb10710cc537018e8585eae15fbd76c4f41a35d0ee2242a3e5dc446
BLAKE2b-256 checksum
How to use checksums
7af31a4ba51807f3eb58929b55a7a76df6e4c9fee851d9d5706c6ac3bfe7f2b9
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.11.0-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL canns_lib-0.11.0-cp314-cp314-musllinux_1_2_x86_64.whl
Size 566.5 kB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
3e4be471905599f772dda699f03d8bbfe6b35d60194237676b07956ba74094b7
BLAKE2b-256 checksum
How to use checksums
6f16a83d548e88ef461714e70a71fa51b41bea7d5a90df245afba7638ea8f05e
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.11.0-cp314-cp314-musllinux_1_2_aarch64.whl

Download URL canns_lib-0.11.0-cp314-cp314-musllinux_1_2_aarch64.whl
Size 515.1 kB
Tags CPython 3.14 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
17cc07a768ceece3b0258c60689e83eb5a228fea8dc8ed22cb3f68b4623306d0
BLAKE2b-256 checksum
How to use checksums
28e28380cd9999575debeadbc668b9345a84bc2311bbbd6b887cc04ebe1c8bcb
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.11.0-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL canns_lib-0.11.0-cp314-cp314-manylinux_2_28_x86_64.whl
Size 485.3 kB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0ff1e4f9382927f18a3763b1c73660aef5448b054ddebc1c49a71a8479fca7eb
BLAKE2b-256 checksum
How to use checksums
6b553c61912bc2ebaa09178d76ddf8aa80f216138311d0e07fb46d7d775cae4d
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.11.0-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL canns_lib-0.11.0-cp314-cp314-manylinux_2_28_aarch64.whl
Size 449.1 kB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
bf0b6539fb22fe9240a594cdd9e367f99be5eca59dcbae014f29284432791276
BLAKE2b-256 checksum
How to use checksums
c2f1e6d7129c98c4f431729749d4dece34632c7d8dfb9f6dfa99ffaeb00318f4
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.11.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL canns_lib-0.11.0-cp314-cp314-macosx_11_0_arm64.whl
Size 409.5 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7605b408dc248f585eb291c160c2dced257e8134611f06f047b6dedca4647a14
BLAKE2b-256 checksum
How to use checksums
1fb2aae0931e5ac3b3f08697abbc4430e70c4c26a59846942a3163893cf079b7
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.11.0-cp314-cp314-macosx_10_15_x86_64.whl

Download URL canns_lib-0.11.0-cp314-cp314-macosx_10_15_x86_64.whl
Size 452.4 kB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
67534b6b99b22feb2c1f9848cae2200cc2d5cbe649414f02691478a96c27825f
BLAKE2b-256 checksum
How to use checksums
34203c03eb5df934ca476c47204105aa1d4b617c10d16e6656489226edadc77f
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.11.0-cp313-cp313-win_amd64.whl

Download URL canns_lib-0.11.0-cp313-cp313-win_amd64.whl
Size 382.8 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
b97090d3382dac408c5655dc3c223420b6dcf099fba3bff29191773d09fb5a6a
BLAKE2b-256 checksum
How to use checksums
35c917a28de3f62d2a707d0e4560815c8121a9f31acab5214725e28f545e7667
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.11.0-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL canns_lib-0.11.0-cp313-cp313-musllinux_1_2_x86_64.whl
Size 567.5 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
2c14b56cf39bedff9ef003e9d8af7241b5f3987cfa0618fd70435035ec4e78fa
BLAKE2b-256 checksum
How to use checksums
ddda83751c76f98f0a13b4f23d18d24c3b52a980877b97644169eccda93ebffd
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.11.0-cp313-cp313-musllinux_1_2_aarch64.whl

Download URL canns_lib-0.11.0-cp313-cp313-musllinux_1_2_aarch64.whl
Size 515.3 kB
Tags CPython 3.13 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
51fec58d728f6a82b34964618653684fe6793da010a09236c12d3c6d6c7934d2
BLAKE2b-256 checksum
How to use checksums
bbf780b70c4f55955330ce2c84a5a0eaf14c888488c941429b202df1a4314a02
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.11.0-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL canns_lib-0.11.0-cp313-cp313-manylinux_2_28_x86_64.whl
Size 486.4 kB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
29b9910dfef3815ae01799677d06dcbddbe605f2f20dc9c410d9c7d1e0395235
BLAKE2b-256 checksum
How to use checksums
e47ad1d7ac398cc4b2d4582982721ebe8427d0dc0117e69017eb5c4f418e3978
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.11.0-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL canns_lib-0.11.0-cp313-cp313-manylinux_2_28_aarch64.whl
Size 449.6 kB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
7b62b9d8f687367f0d20a5234c1e9d25659dede38de7a392d5a9f9afece2a6fc
BLAKE2b-256 checksum
How to use checksums
c30aa6239e48c6a5cad92dc4ef33f519002f9126d1b2d9d81beb34ba19c65349
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.11.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL canns_lib-0.11.0-cp313-cp313-macosx_11_0_arm64.whl
Size 409.5 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d935d8e3266a3fab9efe4cc064664767d4f34d23b6ba371a5579867dfffc310b
BLAKE2b-256 checksum
How to use checksums
7a2b003148d146c4538d665a80b4368b2556ce07b847409f35a3d28e914a1bcf
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.11.0-cp313-cp313-macosx_10_13_x86_64.whl

Download URL canns_lib-0.11.0-cp313-cp313-macosx_10_13_x86_64.whl
Size 452.2 kB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
a588ef20426cbe8553538530e646684cd9f905c702c20331dd0ed26b03adf471
BLAKE2b-256 checksum
How to use checksums
c5fc883761c33baa272c48fa957b2e41fb34464b56ac479ae0c06785bbf34147
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.11.0-cp312-cp312-win_amd64.whl

Download URL canns_lib-0.11.0-cp312-cp312-win_amd64.whl
Size 382.8 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
d730991a696fc6ed0c27209b350c894cf2136368bb38a11927f865c520626b22
BLAKE2b-256 checksum
How to use checksums
05708e10aa90e15502521cd424fa5602443f74a344156c7f0e8b895a0bcf6e76
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.11.0-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL canns_lib-0.11.0-cp312-cp312-musllinux_1_2_x86_64.whl
Size 567.2 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
c089d3b2c711182f7cd1b8c2e2e654d1d3725ecab4b10b9af0a0ebde4278bc33
BLAKE2b-256 checksum
How to use checksums
6a76c01035a95d5f311e08aac6b7d3b473a89b2092f40c1b79b4df00ef2a4867
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.11.0-cp312-cp312-musllinux_1_2_aarch64.whl

Download URL canns_lib-0.11.0-cp312-cp312-musllinux_1_2_aarch64.whl
Size 515.1 kB
Tags CPython 3.12 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
0b8bcc4bfe2aa2556444a649e7f71cd9832f37d13a9d5f34cdad3d4d8f71ef39
BLAKE2b-256 checksum
How to use checksums
dc43a9e29f27bdb45305914d74a65216241e4d09daa575e4a3f39a675e1d17d1
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.11.0-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL canns_lib-0.11.0-cp312-cp312-manylinux_2_28_x86_64.whl
Size 486.2 kB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
172e673e2bc2f05945d2cac3fdbad33f904fc5faae9c1a4860f94b25f8410bde
BLAKE2b-256 checksum
How to use checksums
95fdd8f5e4df35a5ea092ae1675c0927c48200cef7f92427f27d8368c70137cc
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.11.0-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL canns_lib-0.11.0-cp312-cp312-manylinux_2_28_aarch64.whl
Size 449.1 kB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
597d6bdf76dbb898927f958f804f370b0d0b7838aa5a8904595fa6e5b293fc82
BLAKE2b-256 checksum
How to use checksums
c21d5a820c2933c30f1e67e402d6651b43062080bd1544b60e4000cf54cbec44
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.11.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL canns_lib-0.11.0-cp312-cp312-macosx_11_0_arm64.whl
Size 409.3 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
753299cbc398941a6e0b59eca2851b5f6476601aec7ec802f7be2c04216b8118
BLAKE2b-256 checksum
How to use checksums
0f68aadf0914e9bf49884ba4ca21c50cd027b809a0cd3a1d1177d3b1c7c11896
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.11.0-cp312-cp312-macosx_10_13_x86_64.whl

Download URL canns_lib-0.11.0-cp312-cp312-macosx_10_13_x86_64.whl
Size 451.7 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
78eca0ffa582cf411f66a052424044ce2fb1ffe86838c980cdab612df3189a9b
BLAKE2b-256 checksum
How to use checksums
30b2180e6e6865443ac76279d74cd91c652f81024e6d068d9ca119e39193b12c
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.11.0-cp311-cp311-win_amd64.whl

Download URL canns_lib-0.11.0-cp311-cp311-win_amd64.whl
Size 380.8 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
3e12a929426756efa826a22e3f8dfe9cebe3a76bc455f388f332ca91c08aabca
BLAKE2b-256 checksum
How to use checksums
d4b42be49b5372aea7a7c9194b6d1d40989a2cf9e3ea0a5f452ee80110d825de
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.11.0-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL canns_lib-0.11.0-cp311-cp311-musllinux_1_2_x86_64.whl
Size 563.9 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
66f35c6f9279c6dfe6addd5376df675a5b9b565f2993edd70c80fb18b1893a31
BLAKE2b-256 checksum
How to use checksums
f2454a4894c179e1079dc05c4a71f3421c336a5398bcb69ec06763d1ecb69882
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.11.0-cp311-cp311-musllinux_1_2_aarch64.whl

Download URL canns_lib-0.11.0-cp311-cp311-musllinux_1_2_aarch64.whl
Size 514.7 kB
Tags CPython 3.11 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
c4c459aba0f3d11edb5515df2db79d290d9ba8ec14d9ccdca63046e9bd2462c9
BLAKE2b-256 checksum
How to use checksums
b1ea3cca3aa7941689a610c50d4035ec963292b1d7fe9ee97a047df8f512dd82
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.11.0-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL canns_lib-0.11.0-cp311-cp311-manylinux_2_28_x86_64.whl
Size 483.2 kB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e941423ae7b37eb94fadd390af99c120f8957e6d1abb8a15c0ab0f35c6237e0a
BLAKE2b-256 checksum
How to use checksums
ed6ef1138f513a53515a99eb0be96a479b74e71e91fd8af2411d855a3b5f06e2
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.11.0-cp311-cp311-manylinux_2_28_aarch64.whl

Download URL canns_lib-0.11.0-cp311-cp311-manylinux_2_28_aarch64.whl
Size 448.5 kB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
46f976d43a3494f5fb4d09f2a6b6b0f0434746733c7b311555a97abac286e201
BLAKE2b-256 checksum
How to use checksums
604a1e3e7ca6449c64e16899ddfece16a930d2928b90db82b57f97473f40052d
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.11.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL canns_lib-0.11.0-cp311-cp311-macosx_11_0_arm64.whl
Size 411.5 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
383ba938fdc4eb5b15ee30b014f6291e74f4b627ded5e1744e07a07f67e28a98
BLAKE2b-256 checksum
How to use checksums
476b21ecb425e20464ba001ee32343628a5e8b2a8d8de1af01ddb432b09308c0
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.11.0-cp311-cp311-macosx_10_12_x86_64.whl

Download URL canns_lib-0.11.0-cp311-cp311-macosx_10_12_x86_64.whl
Size 454.6 kB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
ce96645bb61b8c99100c85610c5981e2b7ce735843992ccae7cf0551ee777d18
BLAKE2b-256 checksum
How to use checksums
a7b552fe1e120c583bc727b094d5d6e74115460f385c343ecd439fd07f4b42e0
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.11.0 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