Skip to main content

Parquet Metadata Reader

Project description

rugo

License Python Version PyPI Downloads

A lightning-fast Parquet file reader built with C++ and Cython, optimized for ultra-fast metadata extraction and analysis.

๐Ÿš€ Features

  • ๐Ÿš€ Lightning-fast metadata reading - 10-50x faster than PyArrow for metadata operations
  • ๐Ÿ—๏ธ C++ core with Cython bindings - Maximum performance with Python convenience
  • ๐Ÿ“Š Complete schema information - Physical types, logical types, and statistics
  • ๐Ÿ”„ Schema conversion - Convert rugo schemas to orso format (optional)
  • ๐Ÿ”ฌ Zero dependencies - No runtime dependencies for core functionality
  • โœ… PyArrow compatible - Validated results, drop-in replacement for metadata operations

๐Ÿ“ฆ Installation

# Basic installation (coming soon to PyPI)
pip install rugo

# With orso schema conversion support
pip install rugo[orso]

From Source

# Clone the repository
git clone https://github.com/mabel-dev/rugo.git
cd rugo

# Create virtual environment
python -m venv venv
source venv/bin/activate

# Install build dependencies
pip install setuptools cython

# Build the extension
make compile

# Install in development mode
pip install -e .

Requirements

  • Python 3.9+
  • C++ compiler with C++17 support
  • Cython (for building from source)

๐Ÿ”ง Usage

Reading Parquet Metadata

Rugo provides blazing-fast access to Parquet file metadata without the overhead of loading actual data:

import rugo.parquet as parquet_meta

# Extract complete metadata from a Parquet file
metadata = parquet_meta.read_metadata("example.parquet")

print(f"Number of rows: {metadata['num_rows']}")
print(f"Number of row groups: {len(metadata['row_groups'])}")

# Analyze row groups and column statistics
for i, row_group in enumerate(metadata['row_groups']):
    print(f"Row Group {i}:")
    print(f"  Rows: {row_group['num_rows']}")
    print(f"  Size: {row_group['total_byte_size']} bytes")
    
    for col in row_group['columns']:
        print(f"    Column: {col['name']}")
        print(f"    Physical Type: {col['type']}")
        print(f"    Logical Type: {col.get('logical_type', '(none)')}")
        print(f"    Nulls: {col['null_count']}")
        print(f"    Min: {col['min']}")
        print(f"    Max: {col['max']}")
        
        # Check for bloom filter availability
        if parquet_meta.has_bloom_filter(col):
            print(f"    Has bloom filter: Yes")
        else:
            print(f"    Has bloom filter: No")

Advanced Features

Schema Analysis

Extract detailed schema information including both physical and logical types:

import rugo.parquet as parquet_meta

metadata = parquet_meta.read_metadata("example.parquet")
for col in metadata['row_groups'][0]['columns']:
    print(f"{col['name']}: {col['type']} -> {col.get('logical_type', '(inferred)')}")
    # Example output:
    # name: BYTE_ARRAY -> STRING
    # timestamp: INT64 -> TIMESTAMP_MILLIS
    # price: DOUBLE -> (inferred)

Bloom Filter Testing

Quickly test if values might exist in columns without reading the actual data:

import rugo.parquet as parquet_meta

metadata = parquet_meta.read_metadata("example.parquet")

for col in metadata['row_groups'][0]['columns']:
    if parquet_meta.has_bloom_filter(col):
        # Test if a value might be present
        might_exist = parquet_meta.test_bloom_filter(
            "example.parquet",
            col['bloom_offset'],
            col['bloom_length'], 
            "search_value"
        )
        if might_exist:
            print(f"Value might be in column {col['name']}")
        else:
            print(f"Value definitely not in column {col['name']}")

Schema Conversion to Orso

Convert rugo parquet schemas to orso format:

from rugo.converters.orso import rugo_to_orso_schema, extract_schema_only
import rugo.parquet as parquet_meta

# Read parquet metadata
metadata = parquet_meta.read_metadata("example.parquet")

# Convert to orso RelationSchema
orso_schema = rugo_to_orso_schema(metadata, "my_table")

print(f"Schema: {orso_schema.name}")
print(f"Columns: {len(orso_schema.columns)}")
print(f"Estimated rows: {orso_schema.row_count_estimate}")

# Access individual columns
for column in orso_schema.columns[:3]:
    print(f"{column.name}: {column.type} ({'nullable' if column.nullable else 'not null'})")

# Or get a simplified column mapping
schema_info = extract_schema_only(metadata, "simple_name")
print("Column types:", schema_info['columns'])

Note: Orso conversion requires the optional orso dependency:

pip install rugo[orso]

### Metadata Structure

The `read_metadata()` function returns a dictionary with the following structure:

```python
{
    "num_rows": int,           # Total number of rows in the file
    "row_groups": [            # List of row groups
        {
            "num_rows": int,           # Rows in this row group
            "total_byte_size": int,    # Size in bytes
            "columns": [               # Column metadata
                {
                    "name": str,           # Column name/path
                    "type": str,           # Physical type (INT64, BYTE_ARRAY, etc.)
                    "logical_type": str,   # Logical type (STRING, TIMESTAMP_MILLIS, etc.)
                    "min": any,            # Minimum value (decoded)
                    "max": any,            # Maximum value (decoded)
                    "null_count": int,     # Number of null values
                    "bloom_offset": int,   # Bloom filter offset (-1 if none)
                    "bloom_length": int,   # Bloom filter length (-1 if none)
                }
            ]
        }
    ]
}

โšก Performance

Rugo is specifically designed for blazing-fast Parquet metadata operations:

  • โšก 10-50x faster than PyArrow for metadata extraction
  • ๐Ÿง  Minimal memory footprint - Direct binary parsing without intermediate objects
  • ๐Ÿš€ Lightning startup - Fast imports with optimized compiled extensions
  • ๐Ÿ“Š Efficient statistics - Decode min/max values without loading columns

Benchmarks

Run performance comparisons yourself:

make test  # Includes comprehensive PyArrow vs Rugo benchmarks

Why is Rugo so fast?

  • Direct C++ implementation of Parquet metadata parsing
  • Zero-copy binary protocol parsing
  • Optimized Thrift deserialization
  • No Python object overhead during parsing

๐Ÿ› ๏ธ Development

Building from Source

# Install development dependencies
make update

# Build Cython extensions
make compile

# Run tests
make test

# Run linting
make lint

# Check type hints
make mypy

# Generate coverage report
make coverage

Project Structure

rugo/
โ”œโ”€โ”€ rugo/
โ”‚   โ”œโ”€โ”€ __init__.py          # Main package
โ”‚   โ””โ”€โ”€ parquet/             # Parquet decoder implementation
โ”‚       โ”œโ”€โ”€ metadata.cpp     # C++ metadata parser
โ”‚       โ”œโ”€โ”€ metadata.hpp     # C++ headers
โ”‚       โ”œโ”€โ”€ thrift.hpp       # Thrift protocol implementation
โ”‚       โ””โ”€โ”€ metadata_reader.pyx  # Cython bindings
โ”œโ”€โ”€ tests/
โ”‚   โ”œโ”€โ”€ data/                # Test Parquet files
โ”‚   โ””โ”€โ”€ tests
โ”œโ”€โ”€ Makefile                 # Build automation
โ”œโ”€โ”€ setup.py                 # Build configuration
โ””โ”€โ”€ pyproject.toml           # Project metadata

Testing

The test suite includes:

  • Validation tests - Compare output with PyArrow
  • Performance benchmarks - Speed comparisons
  • Edge case handling - Various Parquet file formats
# Run all tests
make test

# Run specific test
python -m pytest tests/test_compare_arrow_rugo.py -v

Code Quality

We maintain high code quality with:

  • Linting: ruff, isort, pycln
  • Type checking: mypy
  • Formatting: ruff format
  • Cython linting: cython-lint

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature-name
  3. Make your changes and add tests
  4. Run the test suite: make test
  5. Run linting: make lint
  6. Submit a pull request

Development Setup

# Clone your fork
git clone https://github.com/yourusername/rugo.git
cd rugo

# Set up development environment
python -m venv venv
source venv/bin/activate
make update
make compile
make test

๐Ÿ“Š What Rugo Does

โœ… Currently Supported:

  • Fast Parquet metadata extraction - Schema, statistics, row group information
  • Logical type detection - STRING, TIMESTAMP, DECIMAL, etc.
  • Bloom filter testing - Value presence checks without data scanning
  • Statistics decoding - Min/max values properly typed and decoded
  • Cross-platform support - Linux, macOS

๐ŸŽฏ Focus Areas: Rugo is laser-focused on being the fastest Parquet metadata reader available. It doesn't try to be everything to everyone - it does one thing exceptionally well.

๐Ÿ› Known Limitations

  • Metadata-only: Rugo focuses on metadata extraction, not data reading
  • C++ compiler required: Building from source requires C++17 compiler
  • Parquet-specific: Designed specifically for Parquet format

๐Ÿ“„ License

Licensed under the Apache License 2.0. See LICENSE for details.

๐Ÿ‘จโ€๐Ÿ’ป Authors

  • Justin Joyce - Initial work - joocer

๐Ÿ™ Acknowledgments

  • Built on top of the Apache Parquet format specification
  • Inspired by PyArrow's parquet module design
  • Uses optimized Thrift binary protocol for metadata parsing
  • Performance insights from the Apache Arrow community

๐Ÿ“ˆ Roadmap

Core Focus: Fastest Parquet Metadata Reader

  • Lightning-fast metadata extraction
  • Complete schema information with logical types
  • Bloom filter support
  • Advanced statistics (histograms, sketches)
  • Parquet format validation

For more information, visit the GitHub repository or open an issue.

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

rugo-0.1.4.tar.gz (118.4 kB view details)

Uploaded Source

Built Distributions

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

rugo-0.1.4-cp312-cp312-musllinux_1_1_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ x86-64

rugo-0.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (812.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

rugo-0.1.4-cp312-cp312-macosx_11_0_arm64.whl (84.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

rugo-0.1.4-cp312-cp312-macosx_10_9_x86_64.whl (87.4 kB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

rugo-0.1.4-cp311-cp311-musllinux_1_1_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

rugo-0.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (804.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

rugo-0.1.4-cp311-cp311-macosx_11_0_arm64.whl (83.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

rugo-0.1.4-cp311-cp311-macosx_10_9_x86_64.whl (87.0 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

rugo-0.1.4-cp310-cp310-musllinux_1_1_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

rugo-0.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (792.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

rugo-0.1.4-cp310-cp310-macosx_11_0_arm64.whl (84.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

rugo-0.1.4-cp310-cp310-macosx_10_9_x86_64.whl (87.5 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

rugo-0.1.4-cp39-cp39-musllinux_1_1_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

rugo-0.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (791.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

rugo-0.1.4-cp39-cp39-macosx_11_0_arm64.whl (84.0 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

rugo-0.1.4-cp39-cp39-macosx_10_9_x86_64.whl (87.5 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

File details

Details for the file rugo-0.1.4.tar.gz.

File metadata

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

File hashes

Hashes for rugo-0.1.4.tar.gz
Algorithm Hash digest
SHA256 136e9043ba9cb68e2c9b7d9191f71e6c5bdf9a266a7a5e8b53465bdd8f5ebd16
MD5 2386632b9dfea41b466e3c652ca9b32e
BLAKE2b-256 0dc501fc738d77c29a07d07a830b60afed1c9a0b6259dd1e02fd16b07b495675

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.4.tar.gz:

Publisher: release.yml on mabel-dev/rugo

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

File details

Details for the file rugo-0.1.4-cp312-cp312-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.4-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d2c9f9bf6eff3fffbe9bd2c1a2688fe01a4ba831f3ca559d3e8cb5611a28a8e8
MD5 0f4f875f7db550521a04b014715b96e0
BLAKE2b-256 9522b292f277c386b5af07c56e053c7f731aff321463c5682f19f113b7702728

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.4-cp312-cp312-musllinux_1_1_x86_64.whl:

Publisher: release.yml on mabel-dev/rugo

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

File details

Details for the file rugo-0.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b566dd6fe4103ce4dd5ca842cedec8884e1698a4b9bfaeb67a6d91c984369c5d
MD5 72a2589e7ab405798a72dc834f011572
BLAKE2b-256 e4afffe2f439b22ee8cc421470a5bd8b7084b606027db8234bb47e9bfd7d00a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on mabel-dev/rugo

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

File details

Details for the file rugo-0.1.4-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rugo-0.1.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1e850e4ac2fe9fafabbcebbb94f26ca3a4836e3505099823de6df881bbc598ca
MD5 ce64b03e7495fd7225571eac66a20bb1
BLAKE2b-256 82bcbf9540e7c3610c474d4cac6e0590e78a9e11eb32671275d3415656f91aff

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.4-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on mabel-dev/rugo

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

File details

Details for the file rugo-0.1.4-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.4-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e352b62c36975bf5e29b743709bb867ae56c990ad7b4c2a2ce3a5eabdc7ff1c3
MD5 4e11352fcce275e254f82fc3b5fb1f99
BLAKE2b-256 360a271db04967b12542015c77a3a654c1fe8ef549be62cb1e36bd9bda092172

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.4-cp312-cp312-macosx_10_9_x86_64.whl:

Publisher: release.yml on mabel-dev/rugo

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

File details

Details for the file rugo-0.1.4-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.4-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 8490f5783425fcec12917e061077261cd95ba564f3df5fb6676f2baf64e91fbf
MD5 0a99b487e9f211aba71bc8e2fdb0ec0a
BLAKE2b-256 b71960a08a2d67f329bf2597675d1704403ebf0b2e722e591a486970f3b3d224

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.4-cp311-cp311-musllinux_1_1_x86_64.whl:

Publisher: release.yml on mabel-dev/rugo

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

File details

Details for the file rugo-0.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d24cb13aac95b1b9e7c30ba7373fbcd3735029d26a79859ef156921dd4e3ae2c
MD5 80a4f1417cfe65f73da2761853464b7a
BLAKE2b-256 6aa283f746360d87af8920d3d543adf3f59d2cd4f3473a4ac14a0ac66ebe2859

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on mabel-dev/rugo

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

File details

Details for the file rugo-0.1.4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rugo-0.1.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ac335792c649395795a05cdf8f38ce2ff78fb16890f38df23ff944debcb29900
MD5 c002f4d626f70cccc548f1e3fb34850c
BLAKE2b-256 51d82eacdc9c484cc72ff3ecd3da1737e0e9a1c852abde8c12eee3fa0f18b9f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.4-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on mabel-dev/rugo

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

File details

Details for the file rugo-0.1.4-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.4-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3f382222ec9c9e7de75fccb4b19715d3e37c509130cc7affc1b91eba4a62abfd
MD5 09d6000e1ffd288f66deab21b8c7220e
BLAKE2b-256 e91aa4e2d980f0a939fdd5019a1b65549b37be26c6a1e81271903c04dcfa4db8

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.4-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: release.yml on mabel-dev/rugo

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

File details

Details for the file rugo-0.1.4-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.4-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 9caf8fa0f34670a154e314e9cd788840f232c6dc7a8e151be154502868afe7f5
MD5 ed1c9baa022136a938ade457f32c09fc
BLAKE2b-256 f981201dc2c097f32e43f47012059cd1349f6b16ca67f26281caaf65cff043a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.4-cp310-cp310-musllinux_1_1_x86_64.whl:

Publisher: release.yml on mabel-dev/rugo

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

File details

Details for the file rugo-0.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 beea2378e542e2c55969fb545aca433749c0b29669653394b7fa07052cc2d63c
MD5 3fc5f661c9773b15acfc5dc84abc2152
BLAKE2b-256 6baab77ea984c7724376c428839bf8ef764097e70c7bf3e76784a4e0b80bf6f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on mabel-dev/rugo

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

File details

Details for the file rugo-0.1.4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rugo-0.1.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d858caeff0bd0b4619806a7a3381f5d422cc8931682e90aaca9005dac580cf21
MD5 61a34b50ea4f6599872829f0ca202a05
BLAKE2b-256 e338d809b85196f126bcd7776dd9b41703b85ada0da0cfc519520a5f2deae6a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.4-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on mabel-dev/rugo

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

File details

Details for the file rugo-0.1.4-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.4-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f63730748d52e7172b5e71a1c15bb3755e368dd1c9772758149ff25ae6b3d603
MD5 ed9d194e11236497f239e6701e05394d
BLAKE2b-256 1c59f7d7dc17137f051a39155ea6b0cff11df7e60ec309c56a2e44379b021057

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.4-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: release.yml on mabel-dev/rugo

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

File details

Details for the file rugo-0.1.4-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

  • Download URL: rugo-0.1.4-cp39-cp39-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.9, musllinux: musl 1.1+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rugo-0.1.4-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 41af496f69aa6293d6ebea0bc679315bccaba5c392d851a0f40bfee01616f69e
MD5 a43a8e5be5a3c712b6d573fb1fec57bf
BLAKE2b-256 03b2e002ca4b878bbec46f19df836e732fef27899c4c44d83014ff0670fc1a72

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.4-cp39-cp39-musllinux_1_1_x86_64.whl:

Publisher: release.yml on mabel-dev/rugo

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

File details

Details for the file rugo-0.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 20e92834726a4d62acaa0a599e77450bce69f05f7af85c32440dfe16ac40c705
MD5 67d6ebaebef51de7ee240d1ff0f6d2b1
BLAKE2b-256 2d8c42712bf9bf4ba1b735e4f287b7e10f294f540dc51a2dc4fd7c0a213a8216

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on mabel-dev/rugo

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

File details

Details for the file rugo-0.1.4-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: rugo-0.1.4-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 84.0 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rugo-0.1.4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d71125425a4f64fee9e012bcff387490408d8e8a9547e116370f2203dc30d300
MD5 2e2ee724bfa7b7790c36604b521feabc
BLAKE2b-256 6e7d72dc2fa3767e69762557e4f84a95382bb0dac5cffef4e5a9385797b88410

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.4-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: release.yml on mabel-dev/rugo

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

File details

Details for the file rugo-0.1.4-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: rugo-0.1.4-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 87.5 kB
  • Tags: CPython 3.9, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rugo-0.1.4-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 653c1609c0a0ff16626d51cc97892978bfbabeb34d6597d8b4655f6590fb0ac8
MD5 32754a520772c2e48da0968f26147c1b
BLAKE2b-256 0ef8e29c7fadc8b00df6aec095fb01f21e430b2fd0eb77e65823e5c61ed9e588

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.4-cp39-cp39-macosx_10_9_x86_64.whl:

Publisher: release.yml on mabel-dev/rugo

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