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

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 with external ID mapping
  • ✅ 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 with external ID mapping (u64 → u32)
  • 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.

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(0)  # Get Node object (external ID 1 maps to internal ID 0)
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_rels(0, rcp.Direction.Outgoing)
print(f"Node 0 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 = node.get_rel_ids(rcp.Direction.Outgoing)
print(f"Neighbor IDs: {neighbor_ids}")  # [1, 2]

# Get relationships as Relationship objects (includes type, start/end nodes)
relationships = node.get_rels(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(0)
neighbors = node.get_rels(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
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(0);
println!("Node 0 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 used internally
  • External Node IDs: u64 (up to 2^64 - 1) - Automatically mapped to internal u32 by GraphSnapshotBuilder
  • 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.1.7.tar.gz (68.6 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.1.7-cp314-cp314-win_amd64.whl (3.7 MB view details)

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

rustychickpeas-0.1.7-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.1.7.tar.gz.

File metadata

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

File hashes

Hashes for rustychickpeas-0.1.7.tar.gz
Algorithm Hash digest
SHA256 ad51762ee69a661a821eab2811af99dc11d4fce33b90f709e7768927db182899
MD5 e5400f349ba12bc82a4e8be460bf0927
BLAKE2b-256 fc579aceb2d267c752de0c37f295cfbfe2d9fe7e9d428b336d6c725e98edf1e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.1.7.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.1.7-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.1.7-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 fa13fb596ed254c2ddd62f1822a8641b5e9087680ffb7c304e2993f3568f6d2a
MD5 14df4ec6d622772e956e59ef24083af7
BLAKE2b-256 1d5997312e0437cf315fd45f26e3b524a5a67d4a54ff1426a783d603e5d72d3d

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.1.7-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.1.7-cp314-cp314-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.1.7-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 46ff69855431ed0c87ae9bba330f01ae6fead506c3c6822bbf36a8cffe3a8d49
MD5 fc633e072c4e0239aa0f492e5498e761
BLAKE2b-256 b48f962b769bf9de30c938d313b669cb67044dda41382d55a6866267908c8733

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.1.7-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.1.7-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.1.7-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 62a25458ec489a6c3db20a3a4605523980d2b2f941de63d1d58d2f0778168083
MD5 b2c38cad17895aeca122e61817b5d244
BLAKE2b-256 624d27f45ff802f18372abad8c8d543676a99c9b3698f11967478c15c2fc5c4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.1.7-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.1.7-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.1.7-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 12b406022859fb7f5372e1c449c5713a7c0b860bba407731e0bb6a5da455a306
MD5 71c260be6f7eecede242549455ab6c2f
BLAKE2b-256 ff2bdb9d7b53f6fa616dc50e41bfec2ae156587d1547cb6d526ddb2893c10a9e

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.1.7-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.1.7-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.1.7-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 dfacc50723d735d4681792754431ddc4ac50c223121554517dba6cb8d9832783
MD5 4b3de79ca55bac6ad1756e1a307703cd
BLAKE2b-256 3c6089b0bca327ed2d04ba5aad1cacb4519d817dc0687074f0f86c84cdb14fdc

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.1.7-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.1.7-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.1.7-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dd690c952d884356e0461b11ce73f4e05b56133a3cc2c8cacd7894660addafe6
MD5 c5fed603b5418ed3993c9d162cec319b
BLAKE2b-256 d31f94d59966d3b1da3267a2db439bb6162e7c41147e07a6cf26ec02524dbd44

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.1.7-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.1.7-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.1.7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 5d5a694578c5d1cca6a67b97a48414d3ecf61ac9aa78e3b1a13731b66c69a461
MD5 a7c83e05f0fecd22e2cb6a9b5930039c
BLAKE2b-256 3ed1e08b97c67dcae657bc86b2f05846f537387ce814ba94e7f4af124b5c0afa

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.1.7-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.1.7-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.1.7-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0719112d35c41ca54db559c2f314c2a405c86b695eda776ee1d2054f963cf3c8
MD5 c2071d33462e7b00b1455ad1dd7ecf56
BLAKE2b-256 868cc5092746a35eae1cbe77ac76783c74031f9aaecdfba7e3b525fb542709f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.1.7-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.1.7-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.1.7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 955d6622c682a53337fe76778529ff2a6bb897ccc7e6b7833127457c6519bc2b
MD5 cd3ec61cacba33bcddf8e6e51918130d
BLAKE2b-256 3ad0aca17ad67c96826be27898e220507f888604abe60ac3a82fef006601e267

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.1.7-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.1.7-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.1.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 20e5b906d94442b96ac33d537060d0fb7460adeb5fdd215452c7ffa6b4340e38
MD5 6ecef268511af57ceccc256cea6212b3
BLAKE2b-256 ca6cc283bb175342232a68beb03c363a430b9f601e6132212db0b0c8dc00f727

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.1.7-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.1.7-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.1.7-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 4cba57045950b4d3b3ecb06eab45be72a6b776dba8ba144dd67d41c385c784c6
MD5 fd15d247fcd6dde7cf320dc21375d223
BLAKE2b-256 e3c7890340bfd8fa9b2a81d38d6688f8232c43959b2d3c3062423f7e9e27de4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.1.7-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.1.7-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.1.7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e6f69356aa4a80b3c1558f9fb44f2a15e8d89cefeff1c51b41c931fa59725627
MD5 df56367c806fe056ab467523177f7acd
BLAKE2b-256 8ffef0e2ec05ceba116629622a9a43c7ea63111da089192dc5e3c976c7798ff3

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.1.7-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.1.7-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.1.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 731418c041c8a69d39ebdb5ea335012ef1bfbbbb1e484b75434a0a81b382382a
MD5 4aa491a4dbca82085f743dffc645f1f3
BLAKE2b-256 8cf99ab0fd2cddd61a7e8b9cfda54cc05283dc996242a3a4ffce844baf1fdfaa

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.1.7-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.1.7-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.1.7-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 bf7c5542963705fa2127a87a2b1820147d6ca045d4c054621d882958feb74d91
MD5 e85c289ec2a62a17ba1dc1d5bb7a939b
BLAKE2b-256 9a111fc349081f0753e46606d40e621d9148457c81771f3ce7a0589ccd823e2d

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.1.7-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.1.7-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rustychickpeas-0.1.7-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 db9688f8215afa123f43527880c493da6b74ffb542d1d8bd7ec96b64cbc1ad5e
MD5 8dd48fdc01791025733c5303b5ba37ed
BLAKE2b-256 c9f26cecd341000e5d6365a1b39c6bc5057ff3aa1bb9028bc05d0a9f485287c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustychickpeas-0.1.7-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