Skip to main content

Parquet Reader

Project description

rugo

License Python Version

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
  • ๐ŸŒธ Bloom filter support - Test value presence without reading data
  • ๐Ÿ”„ 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.8+
  • 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
โ”‚   โ””โ”€โ”€ test_compare_arrow_rugo.py  # Validation 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
  • Column-level metadata caching
  • Advanced statistics (histograms, sketches)
  • Memory-mapped file access for even faster parsing
  • Schema evolution detection
  • 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.0.tar.gz (112.0 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.0-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.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (671.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

rugo-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (79.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

rugo-0.1.0-cp312-cp312-macosx_10_9_x86_64.whl (80.9 kB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

rugo-0.1.0-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.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (665.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

rugo-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (78.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

rugo-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl (80.5 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

rugo-0.1.0-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.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (653.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

rugo-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (79.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

rugo-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl (80.9 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

rugo-0.1.0-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.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (652.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

rugo-0.1.0-cp39-cp39-macosx_11_0_arm64.whl (79.3 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

rugo-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl (80.9 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

rugo-0.1.0-cp38-cp38-musllinux_1_1_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

rugo-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (659.6 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

rugo-0.1.0-cp38-cp38-macosx_11_0_arm64.whl (80.6 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

rugo-0.1.0-cp38-cp38-macosx_10_9_x86_64.whl (82.1 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: rugo-0.1.0.tar.gz
  • Upload date:
  • Size: 112.0 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.0.tar.gz
Algorithm Hash digest
SHA256 27c51da351a82aa4914e5830de347794cd21d78f95920182fa0082bbc82f480e
MD5 9fe910d36f5b86da1c40221e6b693143
BLAKE2b-256 880c986d652b5212a424f2d50c44920c8a765b5cf80deb2c53bb417267b170cd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.0-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 82e765deca8ede004133a32871c253b9edaf9df36027d15baa05ea18d55897fb
MD5 0adaf545b6479edcbed86249b9480ce3
BLAKE2b-256 7be8dcc630d2552c3414d29041a8d4175cca69683a675db7358e0d88fe991267

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 31d6aa4f2849818d0a8e383b69e2cd954e7991f57f1936666623f82fa1b0809a
MD5 0887a50a58f8163a7ee11074cd0b1eae
BLAKE2b-256 f34346115c0f00c228b0047264402c73f19777819038321a6e5cadfd0b75dd0e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fc51b5bec7ad40e7b1e0e6bb1d59c853b80192e1166bf8f9a31883ee1dbb05a8
MD5 d19735ec7aa72dee1d5422528bcf2024
BLAKE2b-256 f0290238b09dd9b6f97e8cac957dfa1cb5710139bd069b7c7b207ecc62d67ac6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 44f32a2ea466d70b86e9b099eae3e244b7272bd3498bf71132608dbfd6fbcd0d
MD5 3579fe547dd9e312f34232f20b2ec0f7
BLAKE2b-256 9f3a8ac699c45e026e914ec1e4e5bf5f8c1917287f54e845d5ef9853fa2dc7e5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 db49423cd5e3729bee45c1308a923456605b27fa3b6a8458c866d957372ab9e5
MD5 655937f10859348d5b59b8962cb181f2
BLAKE2b-256 caf4c64afbd8e886b02e554d93f74892303655074aeed35cbfae79956a3b85ac

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b496b306b18c7aa557f59702e8412c7d7557fb7c8d898b048e44f5ad850683a6
MD5 7b8d58a940c137d8d38b053c1f3dd051
BLAKE2b-256 11f4e6f22b6c59f1184b09b76a56a53557e998ec88eccff6aa6214fa8e6de1dc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b86d6486986e1084bbcd799a6d7b74ef9db730007737b506c79a64b9a428818a
MD5 d5468c6213ab5993605d1a1579dcb160
BLAKE2b-256 ac234717a57489e07ff1e6b974c725551eef507e9affbb5f3132d809cb70bb29

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 802b2b046820474562a2ca08c387db0ee267592c27d5e119a9115c5549e98a75
MD5 bfce6762ddc437131743063a710e42d1
BLAKE2b-256 71ef2342e24e321eb84fd5340e81039f5ee595ed5823b9d2299da7d700313b41

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 fafb1974650cd6afa8f5dcce8dcc1f314018c246e80cdcd2e417db47691a21a5
MD5 b85c1961d11ac03a8f7e06c295fbf1d6
BLAKE2b-256 77448e4a797165b467aca0729cf21b7270b7de70ff48573d717ade296f01d3df

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 70a5ecd69f7406deaa2efc382cfdfd583b33048e24337dc45f038e29e08202a2
MD5 5b0aaeff8af0600eeddbcafcca4eeb37
BLAKE2b-256 eeb7db12290e2473212be8dd5c82bac3d71ea6e486c6b4dcdb737b8a8bdcde0c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bb279e42350943d00ce62d0ba32ee613f289c08b6feaec5fca433ecd6e103963
MD5 c5a68aa88ba62256f033b700369f3148
BLAKE2b-256 94b917db9dafda895dcded8132e47fe7e0a2d10456756382650e254b48927346

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 49d5e17793b88d1b3cf316e68b4002b64497d1621d66c1ce1c064b68d190965b
MD5 1e0a044592ec93dc6294de27265f2f7f
BLAKE2b-256 c47cddbad39a5dc88be24f90ac1ba4097c8a08f7e41151d564522d20ec31ce83

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: rugo-0.1.0-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.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 25aba4d98dfdd64758633885676c86eb124589bc02891efdd4588c6e0e366ca2
MD5 a830db2e7c7a0bdaf4f0349bcc4c7c33
BLAKE2b-256 e03c5b2dc91dd248481b32d3c87309201e3e209f96f271d3f11a7f97d49aabd8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 36e5bcc2d4bac36b6be00dd00020fe83d8035ead75d705771f2a80c2c70376e4
MD5 39eb30afee1a7bab6317bef761611a93
BLAKE2b-256 e9dce291451087defaa50b82d0125f28b9ce5ef963c2f644c34a362467fa3ada

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: rugo-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 79.3 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.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bd0075e048e15e78b11df532d24b6ffa185beea8ea682f724ca2eb659d3e8894
MD5 cd83b2f8d17e582582f8ec3448f19ba2
BLAKE2b-256 af5058aa02bcef53856d0c3ec68c6e39dc877b8ddefcc225b94960bec4eb4933

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: rugo-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 80.9 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.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8ae761a76af5a9391c7ae75b466ac5ac11072a64d905770c9383abbb51152983
MD5 8487d446eb8216448bf8cfcb0ea271c2
BLAKE2b-256 bbd6ad64ed1a87bb7223ae65c40b442d0a65d24be932cbd8b1378cfdf2b55e72

See more details on using hashes here.

Provenance

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

File details

Details for the file rugo-0.1.0-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

  • Download URL: rugo-0.1.0-cp38-cp38-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.8, 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.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 aec811ed91438793a6d709b0586f750f9c939c44a298de74c4fbead95c7eea9b
MD5 f23449c6173a204fc023e41511ef81ce
BLAKE2b-256 aea0ea0cdd9ef2ef47a93c02f560f2824348bd9ee4d71317f44253b3d7f1283e

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.0-cp38-cp38-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.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rugo-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 17f0164f70f251053d9f6ca3cd073bd04f5311660e29bfd9b9ff7b02c2153b00
MD5 0dfca5f929582861d1256c499f5c4079
BLAKE2b-256 82a0c90b96e7e271eeb495fad039192e96783c331cc6346493fa58889a1fdebe

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.0-cp38-cp38-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.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

  • Download URL: rugo-0.1.0-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 80.6 kB
  • Tags: CPython 3.8, 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.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4c21a84cc269c904a1508477c804c7321651b5902f954627b7215c932629e24b
MD5 6a2c8f51cdaa6cc0dddfbe2111eefeaf
BLAKE2b-256 9b33e2a819be778f0428145db027bcfb632062f68e279984afe362086edf104a

See more details on using hashes here.

Provenance

The following attestation bundles were made for rugo-0.1.0-cp38-cp38-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.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: rugo-0.1.0-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 82.1 kB
  • Tags: CPython 3.8, 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.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2130e386a11ebede0abcac70339da37b34526a8b932aa9ba9ace621a53597844
MD5 bb8de817289b1f41a0b1ba1c2fb9f074
BLAKE2b-256 38eddc253d0f4c7c26dfae5874c377254e6d870e23af72f518190406fd5bb543

See more details on using hashes here.

Provenance

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