Skip to main content

High-performance in-memory graph API with RoaringBitmaps, Python bindings via PyO3

Reason this release was yanked:

outdated api

Project description

RustyChickpeas

Coverage Status

An in-memory graph API written in Rust, using RoaringBitmaps as a fundamental data structure.

Overview

RustyChickpeas provides a high-performance, in-memory graph database API that:

  • Uses RoaringBitmaps: Efficient set operations for node/relationship IDs
  • Rust-First: High-performance core implementation
  • Python-Friendly: PyO3 bindings for seamless Python integration
  • In-Memory: Optimized for fast graph operations

Project Status

Implementation Complete - Core functionality implemented with comprehensive benchmarks and Python bindings.

  • ✅ Immutable GraphSnapshot with CSR adjacency and columnar properties
  • ✅ GraphSnapshotBuilder for efficient bulk loading (requires u32 node IDs)
  • ✅ Parallel finalization using rayon for improved performance
  • ✅ Python bindings via PyO3
  • ✅ Bulk loading from Parquet files

See rustychickpeas-core/benches/README.md for benchmark information.

Key Features

  • Immutable GraphSnapshot - Read-optimized graph with CSR adjacency and columnar properties
  • GraphSnapshotBuilder - Efficient bulk loading (requires u32 node IDs directly)
  • RustyChickpeas Manager - Version management for multiple graph snapshots
  • Parallel Finalization - Uses rayon to parallelize index building during finalization
  • ✅ Label and property support with inverted indexes
  • ✅ Efficient traversal using CSR (Compressed Sparse Row) format
  • ✅ Python bindings via PyO3
  • ✅ Bulk loading from Parquet files

Installation

pip install rustychickpeas

Or from source:

git clone https://github.com/freeeve/rustychickpeas.git
cd rustychickpeas/rustychickpeas-python
pip install maturin
maturin develop --release

Platform Support

RustyChickpeas is tested and supported on:

  • Linux x86_64 - Full support
  • macOS x86_64 (Intel) - Full support
  • macOS arm64 (Apple Silicon) - Full support
  • Windows x86_64 - Full support

Limitations:

  • ⚠️ Linux aarch64 (ARM servers, e.g., AWS Graviton) - Not currently tested in CI. The Rust core should compile and work, but Python bindings require native runners or complex cross-compilation setup. Contributions welcome!

Python Version Support

RustyChickpeas requires Python >= 3.10 and is tested against Python 3.10, 3.11, 3.12, 3.13, and 3.14.

Supported Python Versions by Platform

Platform Python Versions
Linux x86_64 3.10, 3.11, 3.12, 3.13, 3.14
macOS x86_64 (Intel) 3.11, 3.12, 3.13, 3.14
macOS arm64 (Apple Silicon) 3.10, 3.11, 3.12, 3.13, 3.14
Windows x86_64 3.10, 3.11, 3.12, 3.13, 3.14

Note: Python 3.10 is not available on macOS x86_64 runners due to dependency issues with the GitHub Actions environment. Python 3.10 works fine on macOS arm64 (native runners) and all other platforms.

PyO3 Compatibility

  • Python 3.10-3.12: Fully supported by PyO3 0.20.3

  • Python 3.13-3.14: Uses stable ABI compatibility mode (PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1) since PyO3 0.20.3 doesn't officially support these versions yet. This works correctly but uses the stable ABI for forward compatibility.

    Note for local development: When using cargo check or cargo build with Python 3.13/3.14, you may need to set the environment variable:

    export PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1
    cargo check --package rustychickpeas-python
    

    maturin builds automatically handle this via the py-limited-api = "auto" setting in pyproject.toml.

Quick Start

Python

Basic Usage (with Manager)

import rustychickpeas as rcp

# Create a manager for version management
manager = rcp.RustyChickpeas()

# Create a builder with a version
builder = manager.create_builder(version="v1.0")

# Add nodes with labels
builder.add_node(1, ["Person"])
builder.add_node(2, ["Person"])
builder.add_node(3, ["Company"])

# Add relationships
builder.add_rel(1, 2, "KNOWS")
builder.add_rel(1, 3, "WORKS_FOR")

# Set properties (automatic type detection)
builder.set_prop(1, "name", "Alice")
builder.set_prop(1, "age", 30)
builder.set_prop(2, "name", "Bob")
builder.set_prop(3, "name", "Acme Corp")

# Finalize and add to manager (uses the version set when creating the builder)
builder.finalize_into(manager)

# Retrieve snapshot by version
graph = manager.get_graph_snapshot("v1.0")

# Query nodes
node = graph.get_node(1)  # Get Node object (node ID 1)
print(f"Node labels: {node.get_labels()}")  # ["Person"]
print(f"Node property 'name': {node.get_property('name')}")  # "Alice"

# Query relationships - get neighbor Node objects
neighbors = graph.get_neighbors(1, rcp.Direction.Outgoing)
print(f"Node 1 has {len(neighbors)} outgoing neighbors")
for neighbor in neighbors:
    print(f"  Neighbor ID: {neighbor.id()}, labels: {neighbor.get_labels()}")

# Or get just the neighbor IDs
neighbor_ids = graph.get_neighbor_ids(1, rcp.Direction.Outgoing)
print(f"Neighbor IDs: {neighbor_ids}")  # [2, 3]

# Get relationships as Relationship objects (includes type, start/end nodes)
relationships = graph.get_rels(1, rcp.Direction.Outgoing)
for rel in relationships:
    print(f"  {rel.get_type()}: {rel.get_start_node().id()} -> {rel.get_end_node().id()}")

Standalone Usage (without Manager)

import rustychickpeas as rcp

# Create a standalone builder
builder = rcp.GraphSnapshotBuilder(version="v1.0")

# Add nodes and relationships
builder.add_node(1, ["Person"])
builder.add_node(2, ["Person"])
builder.add_rel(1, 2, "KNOWS")

# Finalize into a snapshot
graph = builder.finalize()

# Query the graph
node = graph.get_node(1)
neighbors = graph.get_neighbors(1, rcp.Direction.Outgoing)

Loading from Parquet Files

import rustychickpeas as rcp

# Direct loading (creates a standalone snapshot)
graph = rcp.GraphSnapshot.read_from_parquet(
    nodes_path="nodes.parquet",
    relationships_path="relationships.parquet",
    node_id_column="id",
    label_columns=["label"],
    start_node_column="from",
    end_node_column="to",
    rel_type_column="type"
)

# Or load into a builder for more control
manager = rcp.RustyChickpeas()
builder = manager.create_builder(version="v1.0")
builder.load_nodes_from_parquet("nodes.parquet", node_id_column="id", label_columns=["label"])
builder.load_relationships_from_parquet("relationships.parquet", 
                                       start_node_column="from", 
                                       end_node_column="to", 
                                       rel_type_column="type")
builder.finalize_into(manager)
graph = manager.get_graph_snapshot("v1.0")

Rust

use rustychickpeas_core::RustyChickpeas;

// Create a manager (handles multiple snapshots by version)
let manager = RustyChickpeas::new();

// Create a builder from the manager with version
let mut builder = manager.create_builder(Some("v1.0"), None, None);

// Add nodes and relationships (node IDs must be u32)
builder.add_node(1, &["Person"]);
builder.add_node(2, &["Person"]);
builder.add_rel(1, 2, "KNOWS");

// Finalize the builder
let snapshot = builder.finalize(None);

// Add to manager
manager.add_snapshot(snapshot);

// Retrieve the snapshot by version
let snapshot = manager.get_graph_snapshot("v1.0").unwrap();

// Query the snapshot
let neighbors = snapshot.get_out_neighbors(1);
println!("Node 1 neighbors: {:?}", neighbors);

Version Management

RustyChickpeas supports version management at the snapshot level using the RustyChickpeas manager. Each snapshot can have a version string (e.g., "v1.0", "v2.0") that identifies it.

Python

import rustychickpeas as rcp

# Create a manager
manager = rcp.RustyChickpeas()

# Create and build version 1.0
builder1 = manager.create_builder(version="v1.0")
# ... add nodes/relationships ...
builder1.finalize_into(manager)

# Create and build version 2.0
builder2 = manager.create_builder(version="v2.0")
# ... add nodes/relationships ...
builder2.finalize_into(manager)

# Retrieve snapshots by version
v1_snapshot = manager.get_graph_snapshot("v1.0")
v2_snapshot = manager.get_graph_snapshot("v2.0")

# List all versions
versions = manager.versions()  # ["v1.0", "v2.0"]

How Version Management Works

  1. Setting Version: Pass version parameter to create_builder() when creating the builder, or use GraphSnapshotBuilder.set_version(version_string) to set it later.

  2. Storage: After calling builder.finalize(), add the snapshot to the manager using manager.add_snapshot(snapshot). The snapshot will be stored under its version (if set) or "latest" if no version is set.

  3. Retrieval: Use manager.get_graph_snapshot(version_string) to retrieve a snapshot by version.

  4. Version Storage: Versions are stored as strings and can be any identifier you choose (e.g., "v1.0", "2024-01-01", "production").

Capacity and Auto-Growing

The capacity_nodes and capacity_rels parameters are optional performance hints for pre-allocation:

  • Defaults: If not specified, starts with 2^20 (1,048,576) nodes/relationships capacity
  • Auto-Growing: The builder automatically grows as needed (doubling capacity each time)
  • Maximum Limits:
    • Nodes: Up to 2^32 - 1 (4.3 billion) - enforced by u32 NodeId
    • Relationships: Up to 2^64 - 1 (18.4 quintillion) - limited by memory
  • When to Specify Capacity: Only specify if you know the approximate size upfront to avoid reallocations. For most use cases, the default auto-growing behavior is sufficient.

Example:

# Uses default (2^20 = 1,048,576), auto-grows as needed
builder = manager.create_builder(version="v1.0")

# Large graph - specify capacity hint to avoid reallocations
builder = manager.create_builder(version="v1.0", capacity_nodes=10_000_000, capacity_rels=50_000_000)

Performance

See rustychickpeas-core/benches/README.md for benchmark information.

For Python-specific performance tests, see rustychickpeas-python/tests/benchmark_large_parquet.py.

Highlights:

  • Node existence: ~7ns (constant time)
  • Property lookup: ~44ns (constant time)
  • Label queries: ~56ns for 100 nodes, ~348ns for 100K nodes
  • BFS traversal: ~130ns per node
  • Bitmap operations: Sub-microsecond for millions of elements

Limits and Scalability

Hard Limits

  • Nodes: Up to 2^32 - 1 (4,294,967,295 nodes) - Limited by u32 NodeId
  • Node IDs: Must be u32 (0 to 2^32 - 1) - Users should map their own IDs to u32 if needed
  • Relationships: Up to 2^64 - 1 (18,446,744,073,709,551,615) - Limited by u64 counter, but practically constrained by memory
  • Unique Strings (labels, relationship types, property keys): Up to 2^32 - 1 (4,294,967,295) - Limited by u32 InternedStringId
  • Properties per Node: No hard limit, constrained by available memory
  • Property Values: No hard limit, constrained by available memory

Note: While relationships can theoretically reach 2^64 - 1, practical limits are determined by available system memory. Each relationship requires storage in CSR arrays and indexes.

Tested Scales

1 Million Nodes + 1 Million Relationships - Tested and verified:

  • Memory usage: ~2.7GB (with string interning) to ~3.4GB (without)
  • Bulk load rate: ~4M entities/sec from Parquet files
  • Direct builder rate: 21-31M nodes/sec, 12-19M rels/sec
  • Query performance: Sub-millisecond for most operations
  • See rustychickpeas-python/tests/benchmark_large_parquet.py for large-scale benchmarks

Practical Considerations

Memory Usage:

  • Base overhead: ~3.5 bytes per node/relationship (structure + indexes)
  • Properties: Additional memory depends on property count and size
  • String interning: Reduces memory signficantly for graphs with high string duplication
  • Property value interning: Optional feature saves 32-50% memory when property values have high duplication

Performance Characteristics:

  • Direct Builder Operations: 21-31M nodes/sec, 12-19M rels/sec (exceeds 10M/sec target)
  • Bulk Loading: ~4M entities/sec from Parquet files (sequential processing, I/O bound)
  • Finalization: Parallelized using rayon for label/type indexes, property columns, and inverted indexes
  • Queries: Constant-time for indexed operations (label/type lookups)
  • Traversal: Linear with graph connectivity (BFS, shortest path)
  • Memory: Linear growth with graph size

Recommended Usage:

  • Small graphs (< 100K nodes): Excellent performance, minimal memory footprint
  • Medium graphs (100K - 10M nodes): Good performance, manageable memory requirements
  • Large graphs (10M+ nodes): Feasible but memory becomes the primary constraint; finalization benefits from parallelization
  • Very large graphs (100M+ nodes): Possible with sufficient RAM (100GB+); parallel finalization helps reduce finalization time

Memory Estimation:

Base memory ≈ (nodes + relationships) × 3.5 bytes
+ Properties (varies by property count/size)
+ String interning overhead (minimal)
- String interning savings (~21.5% if enabled)

Example: 1M nodes + 1M relationships with properties:

  • Without interning: ~3.4GB
  • With basic interning: ~2.7GB
  • With property value interning (50% reuse): ~1.4GB

Testing

Running Tests

Rust Tests:

cargo test --workspace

Python Tests:

cd rustychickpeas-python
pytest tests/

Test Coverage

Test coverage is set up for both Rust and Python:

Run Coverage:

./scripts/coverage.sh  # Linux/macOS
.\scripts\coverage.ps1  # Windows

Coverage Reports:

  • Rust: coverage/rust/tarpaulin-report.html
  • Python: coverage/python/htmlcov/index.html

See docs/COVERAGE.md for detailed coverage documentation.

License

Licensed under MIT license (LICENSE or http://opensource.org/licenses/MIT).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rustychickpeas-0.2.0.tar.gz (69.7 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

rustychickpeas-0.2.0-cp314-cp314-win_amd64.whl (3.7 MB view details)

Uploaded CPython 3.14Windows x86-64

rustychickpeas-0.2.0-cp314-cp314-manylinux_2_34_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

rustychickpeas-0.2.0-cp314-cp314-macosx_11_0_arm64.whl (3.8 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

rustychickpeas-0.2.0-cp313-cp313-win_amd64.whl (3.7 MB view details)

Uploaded CPython 3.13Windows x86-64

rustychickpeas-0.2.0-cp313-cp313-manylinux_2_34_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

rustychickpeas-0.2.0-cp313-cp313-macosx_11_0_arm64.whl (3.8 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

rustychickpeas-0.2.0-cp312-cp312-win_amd64.whl (3.7 MB view details)

Uploaded CPython 3.12Windows x86-64

rustychickpeas-0.2.0-cp312-cp312-manylinux_2_34_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

rustychickpeas-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (3.8 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

rustychickpeas-0.2.0-cp311-cp311-win_amd64.whl (3.7 MB view details)

Uploaded CPython 3.11Windows x86-64

rustychickpeas-0.2.0-cp311-cp311-manylinux_2_34_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

rustychickpeas-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (3.8 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

rustychickpeas-0.2.0-cp310-cp310-win_amd64.whl (3.7 MB view details)

Uploaded CPython 3.10Windows x86-64

rustychickpeas-0.2.0-cp310-cp310-manylinux_2_34_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

rustychickpeas-0.2.0-cp310-cp310-macosx_11_0_arm64.whl (3.8 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file rustychickpeas-0.2.0.tar.gz.

File metadata

  • Download URL: rustychickpeas-0.2.0.tar.gz
  • Upload date:
  • Size: 69.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rustychickpeas-0.2.0.tar.gz
Algorithm Hash digest
SHA256 fbfef2b7c0d5aa9a723c3fdd00a85b7d99b21523036bdf2edd6e1fa67bf14fca
MD5 a401c5df71c016dfc700d5bf3a73d8c6
BLAKE2b-256 701d19ff66094886c2fa4c019f07721f6665d8243a9d66f664a8e4946c606397

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.2.0.tar.gz:

Publisher: publish.yml on freeeve/rustychickpeas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rustychickpeas-0.2.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.2.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 196e03521e94ae48d18375c9c4c167b83f91412ed8753cb99265f1273bd68230
MD5 1ad99bea57fe2ddde6e9fe1a19981e07
BLAKE2b-256 807f2ec14eb10be7a087d2674fdee9a50c0fda9bd7d4ecf0d7fdf57671a0417b

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.2.0-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on freeeve/rustychickpeas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rustychickpeas-0.2.0-cp314-cp314-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.2.0-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d8b6f53bc8edc6f812a0c40dfac6fb011cdd65f404874aff91cdf3a7ff9a581e
MD5 1bfc74f1b7f018d8975a90b30bd262d6
BLAKE2b-256 9b074bb072d97a357d1520b507d20e4c271f9e70c37314da778c4dae733c34b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.2.0-cp314-cp314-manylinux_2_34_x86_64.whl:

Publisher: publish.yml on freeeve/rustychickpeas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rustychickpeas-0.2.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.2.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dd1c9bfe9d102e2934ee4b7bab449738c7047763fe97c15a95af4adbcc22df66
MD5 aca889a0378172e9d94428a9ae73ecd5
BLAKE2b-256 1e4dcdc5d41100f18a24dc1839fa67f4f8a0b212006cff84718d40181cc91c68

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.2.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on freeeve/rustychickpeas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rustychickpeas-0.2.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 837515fc26bded17deac77113e5dac5392337d66ac30d75dcf8641983e3d5174
MD5 a9a1418751f65e12d75297e4f81f3c6f
BLAKE2b-256 b7962104f3842ffe571fbc1138b2189463714f95a8d221c76688cb5e8dba55d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.2.0-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on freeeve/rustychickpeas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rustychickpeas-0.2.0-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.2.0-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 5b53b27ef246676e0f68bec6d64913f11aabe129b4c75f9634fb79d5d7eb42a1
MD5 dc792ae492f58df49357b5b1fd145a29
BLAKE2b-256 70b2fe7a3b195645e204a1bb58dcb509a404d1f8ded62c3ce662595ad88fde1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.2.0-cp313-cp313-manylinux_2_34_x86_64.whl:

Publisher: publish.yml on freeeve/rustychickpeas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rustychickpeas-0.2.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e394f0f62d1dcd0a4cd264cecf624db90e49e840218335b376d1c81ee9b6f5f3
MD5 e69bac8fe70dddabc1b66f088c5f3896
BLAKE2b-256 7caeb73c4f6261afdf9b16ba00997b15b5cd716cd08df7abce9a7cf5bd96d1f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.2.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on freeeve/rustychickpeas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rustychickpeas-0.2.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 dd1511a951e88db677f7be614723f377c6321a649330a5237fd6e042ab19014d
MD5 0f5529829b5168bdb97e059d2b5bcfa0
BLAKE2b-256 84967e0420737eac2fce65f9ee6375860ae97a0f5e34f5c1c7e968c4ef099bde

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.2.0-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on freeeve/rustychickpeas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rustychickpeas-0.2.0-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.2.0-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 7167850b4bebe89c1282fe061042db17684b725ed948c5c29adf0d1de8412826
MD5 2844cba6ac9869957f4f58d186bf62e3
BLAKE2b-256 ac508dc2b22f4df728db111c00a180efb659206e21348181f712c0d8e2a4bf30

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.2.0-cp312-cp312-manylinux_2_34_x86_64.whl:

Publisher: publish.yml on freeeve/rustychickpeas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rustychickpeas-0.2.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c350120b20fa46e1c239f2accabcd2a9c50212aeedd4331be411ab004b58611e
MD5 00f4222db751570c59a918f6e564dcac
BLAKE2b-256 4c0ccc4bb66bd96088da9c65e75762f0c33933710f126fb5f6ecc934cfb513a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.2.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on freeeve/rustychickpeas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rustychickpeas-0.2.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a3f967dbd8dcd6ec5b7d14fa99be59462ac92255d920524682a5c891d2541d8c
MD5 e4657b153b29985fbed92adf72551186
BLAKE2b-256 084d700ff6e08a6e55083e69c83446a8855737b8b7d099ac22667560cbf4bd88

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.2.0-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on freeeve/rustychickpeas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rustychickpeas-0.2.0-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.2.0-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 144077668913c1ba2b1ca4a67a41242e2d7104230bc67a7b3a1420df2bc0a214
MD5 a54e345d9db6c1b87f39eba5719efe44
BLAKE2b-256 76a8965883a397135f52b4a39f61bbd9eef4c524ecbfce784a1644dbeeceb386

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.2.0-cp311-cp311-manylinux_2_34_x86_64.whl:

Publisher: publish.yml on freeeve/rustychickpeas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rustychickpeas-0.2.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5157ea11a98aca7dd1ba5d2b4cb4be5efc1ff3f0f570d070678fe898cfa04e08
MD5 03915fa53d48e4ff5e84786846b53a8d
BLAKE2b-256 3f7f6a052f60a53e8b7d1a65f98caa51772e2973871acc8c1078102226cf68d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.2.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on freeeve/rustychickpeas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rustychickpeas-0.2.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 12ec6f57afa292bf6ea9545cb8a07d9f44dd93c94ba67abc27f3a79d86f3652f
MD5 0d724ee473f47720a73604d31edab69a
BLAKE2b-256 5a6a118627e1d172962500715a243a1decde941ec864439861efeabda3356546

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.2.0-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on freeeve/rustychickpeas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rustychickpeas-0.2.0-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.2.0-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 172cc36c8a761a9b512a0625e4a31033da0ecff0fd48bf1656a5db57b6630506
MD5 28eba96da3162292fdfcfefed01a3393
BLAKE2b-256 434caabfaf2952aa6675b22eb2c4a839ab8e8520c6db15245b6cdff79b2f8d7e

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.2.0-cp310-cp310-manylinux_2_34_x86_64.whl:

Publisher: publish.yml on freeeve/rustychickpeas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rustychickpeas-0.2.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 586b7cc8e07ad90505af108e51c048a863a389e48bf17ad76fc0e1d10ae0e3c7
MD5 0628f2f60f1c1b3dc4ad71d75a6e34b4
BLAKE2b-256 fc70590788e81dbbf40970091f9e6458f9d05b3941c4752ac7208a02b397411f

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.2.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on freeeve/rustychickpeas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page