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.3.tar.gz (118.6 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.3-cp312-cp312-musllinux_1_1_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ x86-64

rugo-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (696.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

rugo-0.1.3-cp312-cp312-macosx_11_0_arm64.whl (82.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

rugo-0.1.3-cp312-cp312-macosx_10_9_x86_64.whl (84.0 kB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

rugo-0.1.3-cp311-cp311-musllinux_1_1_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

rugo-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (681.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

rugo-0.1.3-cp311-cp311-macosx_11_0_arm64.whl (82.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

rugo-0.1.3-cp311-cp311-macosx_10_9_x86_64.whl (83.7 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

rugo-0.1.3-cp310-cp310-musllinux_1_1_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

rugo-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (668.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

rugo-0.1.3-cp310-cp310-macosx_11_0_arm64.whl (82.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

rugo-0.1.3-cp310-cp310-macosx_10_9_x86_64.whl (84.0 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

rugo-0.1.3-cp39-cp39-musllinux_1_1_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

rugo-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (667.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

rugo-0.1.3-cp39-cp39-macosx_11_0_arm64.whl (82.6 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

rugo-0.1.3-cp39-cp39-macosx_10_9_x86_64.whl (84.0 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: rugo-0.1.3.tar.gz
  • Upload date:
  • Size: 118.6 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.3.tar.gz
Algorithm Hash digest
SHA256 332c9ead5d20da24e7b910ea0ba9a430542240bf80954997dda2a9a947f6e33d
MD5 be02cce3108da8709f6f02aa197870ab
BLAKE2b-256 c8de3fa5f0cd7a2ea79c8b78464f7b87be2bb3b8d7924aa2afb992c9c4f000b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.3.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.3-cp312-cp312-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.3-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 2887512db9871051435abc22aa01daccf0e6bf88c3156df13fed3983c908da41
MD5 44fc35565aa6accc7ebc2557b30bbc3d
BLAKE2b-256 21deac10cae6e4533520321872f16cb9015d6bf3b10048627f088c16b679c603

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.3-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.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fac71f91c4c99575ea251a2f29239fb2a57c62fe736dc0a6c96b23898025e96a
MD5 2f64f97b98f4dfe8df580d9b055840b5
BLAKE2b-256 1fd421f6a5dd2d3879a58e31d360ca1837c9a9c48d87d57f7ca9343912126134

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.3-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.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rugo-0.1.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8aca8150da49f8f159370c6f369c6849960a91024de15206f2de14f95595539c
MD5 2dac576059dea8f1a0db92227e64553b
BLAKE2b-256 6fcb23c1248aed8ad3b5533719e80d8e77392729bc4400042217f0aba136bcec

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.3-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.3-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.3-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 791ecc367156b096180b84550b93dff54dafae6c1a50d036df84bab96fc6b527
MD5 40a0f11808565bd7c0adf03ded08ddd7
BLAKE2b-256 eb64d94874d4ae61076e146ab630edc3f0ec3089795604b5197d3d143fb2be90

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.3-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.3-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.3-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 327663feb41794c0b7c2c9fe1df3deeb50162247fb094ff5529b022beba4d2f5
MD5 0599f34be39519ae0d1efbd2891286e9
BLAKE2b-256 4bc37348c168301bd38576423926d6a9f82fe83133b2381c5ddaec5c8d9526d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.3-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.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 64cf296d7f5d1fee72c51b09075cf84587a60e8c0a9a546c7f6b5567c9e804de
MD5 b7b81df47ab3ee6bfafdba1fb11a9b77
BLAKE2b-256 dc7b6cee9e349096009787832a09d3538c96cdfc37b70ae579e4cae0a2c2c0c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.3-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.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rugo-0.1.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8f2433a33b3299e5e8ef2f0406f8fb5deb0fb83745d6cef75e23e1f92f51ba48
MD5 a17802f8a7ec723a282517ca2a1859d1
BLAKE2b-256 0ecf2e15190c7cda2e1d740fbbdbcac6b60fdb3a9783caa1160a3a696fd27954

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.3-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.3-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.3-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bdde161c09a5147a61f9be47e40302b3954daf3d4127806d7fa7b02e37ee10b7
MD5 6fbf16aebf9464b773a307510962c64b
BLAKE2b-256 733aa5df25014edf54e05772eba7561511e7d094b9d94c41b3430aba9f65b3de

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.3-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.3-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.3-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 dcd43bd10740a81b602c448c55ebb6f2022db8815288f2b1db016a14d21fdaa5
MD5 d5149ad050c71372fafc84a6c0c8ea23
BLAKE2b-256 ddb03999410d466b4119acdf8a489962a015608b7ae2b30a07013b78d8634bc0

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.3-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.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 41cccdb3c3d9b909cf07084db73fe718d85e457400cf1cb532fbcf598fc16eaf
MD5 1b350b45ecc7f19420f41bf4f2e8044d
BLAKE2b-256 0898bdce5e7726b729c73ea5d1765645d47d6b83e1cafc2963ba023ecbf5b47d

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.3-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.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rugo-0.1.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e2bcb97c7013bbe0f1e9eb5cb2a25d84e86b27652609b57a5ff0be9c427cea3b
MD5 fcb64f4e6370a8d1bbb201678daec705
BLAKE2b-256 2c385b29612d1e0577a602e08a979df28aac216a6db523016500ac8391019d2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.3-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.3-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 72cabc80e6ee0eef48d2f6c7f799629458dcb741a4c88e62752ad8a53349cea5
MD5 e4dc08f092f3010fb6de10f52ac6c092
BLAKE2b-256 c1d4c5a8113e9675fd0dbe2c767abcb674f3fd3d67ea568ee61ff2d02ac3cf5e

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.3-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.3-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

  • Download URL: rugo-0.1.3-cp39-cp39-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 1.3 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.3-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 149d95d45f0b83523c7c77dcee35c9a9960da8e26c17f2f98c5f9b90549b209f
MD5 02f7d5aa1ffb432a664dbe27d2489425
BLAKE2b-256 7141f5326af6cc80cd35dca86844879ed0190c7b0be11aad14d2ca261742e9be

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.3-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.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4ed0affe2edfc2afdb7f829f08d4f3a388d568150ffd65c4ff765a4624824218
MD5 e8cf89351ec5351965ebebf9fbb10c99
BLAKE2b-256 7b7ce73258e8e6dad6f93679c0123cd3281370273ea0caa1b9f64c0293a619cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.3-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.3-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: rugo-0.1.3-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 82.6 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.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 946859e8e2daf3a136ec25ca6c90a58a56ac435f7744b7f548ee04f1aada0b4a
MD5 800ac3a421fccb526ea401dd664f2971
BLAKE2b-256 cf041e0188838912a235632e18d4787c60a9c410724202e2e8c36ff573df388e

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.3-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.3-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: rugo-0.1.3-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 84.0 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.3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1e26710a0d92f51a4eb84341e0a66537b1d4f1917c0a67bec5bf853e411b11cc
MD5 1b83f3ee1b18e68340eef4d9688210ac
BLAKE2b-256 eae45213f1fb5add2f291f9a25fd84243cb857d4397c28976d22adc7f165dd21

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.3-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