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 (None if not available)
                    "distinct_count": int, # Number of distinct values (None if not available)
                    "num_values": int,     # Total number of values (None if not available)
                    "total_uncompressed_size": int,  # Uncompressed data size in bytes
                    "total_compressed_size": int,    # Compressed data size in bytes
                    "data_page_offset": int,         # Offset to data pages
                    "index_page_offset": int,        # Offset to index pages (None if none)
                    "dictionary_page_offset": int,   # Offset to dictionary pages (None if none)
                    "bloom_offset": int,   # Bloom filter offset (None if none)
                    "bloom_length": int,   # Bloom filter length (None if none)
                    "encodings": [str],    # List of encodings used (e.g., ["PLAIN", "RLE"])
                    "compression_codec": str,  # Compression codec (e.g., "SNAPPY", "GZIP")
                    "key_value_metadata": dict,  # Custom key-value metadata (None 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.5.tar.gz (123.9 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.5-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.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (815.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

rugo-0.1.5-cp312-cp312-macosx_11_0_arm64.whl (87.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

rugo-0.1.5-cp312-cp312-macosx_10_9_x86_64.whl (91.1 kB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

rugo-0.1.5-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.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (815.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

rugo-0.1.5-cp311-cp311-macosx_11_0_arm64.whl (87.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

rugo-0.1.5-cp311-cp311-macosx_10_9_x86_64.whl (90.4 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

rugo-0.1.5-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.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (803.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

rugo-0.1.5-cp310-cp310-macosx_11_0_arm64.whl (88.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

rugo-0.1.5-cp310-cp310-macosx_10_9_x86_64.whl (90.7 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

rugo-0.1.5-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.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (802.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

rugo-0.1.5-cp39-cp39-macosx_11_0_arm64.whl (88.0 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

rugo-0.1.5-cp39-cp39-macosx_10_9_x86_64.whl (90.7 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: rugo-0.1.5.tar.gz
  • Upload date:
  • Size: 123.9 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.5.tar.gz
Algorithm Hash digest
SHA256 1a4edf8d6b14a1652960132b2b8bfba39f4a7eaa2062fcc1dca283f842dbe050
MD5 a3cbc536e324466d3eb70c3e92e66cb8
BLAKE2b-256 4c10c60fe6e2ed94d47110eef0f3ef8c30c736280353db9cefa72a6fca6041ac

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.5-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 37c396c09f6853510bd3a63168b5d9af5e39f75c10a5fde4856be1c5874377d6
MD5 b30b7d03e2c166cae8034ec8b86ff280
BLAKE2b-256 d6a80df80c4787aba917297e57cfdbb2dca05143b19075b54e5d9cf2be5f552b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 996410808ee0b90b61489ae46a16b466c05114b9c7132a803ad17406d7512cb8
MD5 f8882d39b0849c20d15eb9d31523535f
BLAKE2b-256 51c7fb037a38719fb4faf3601a041d72c2466435dc51b43a093c2ba713574b65

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2698a07af085d02f34396a6daecafbfaed593c432cf183af9dfbcd94f432d18e
MD5 35c6e22822bd38c2b26dd636128f4ea9
BLAKE2b-256 f0e1fb669cb8cf9779d31a1ed41f0473ba3446ae1b398272075eb0bb5228a8ac

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.5-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8a6d1a023fed4f473cc4816adf9733c121fab94825269556bce2a60a0cf403cb
MD5 de2c1a38c0b2d3e6bb64ecbfa0c885a5
BLAKE2b-256 22ec7b90351afcedad94b22d5d5fc030a7d43a1bd9fc46b6882d91ad009d74f5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.5-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 894b95895ac480687a069ba62d00dfa946d974823fe9b8e4be805e4f3682e58c
MD5 f475099c8e16de3e4b156d6b2a729a91
BLAKE2b-256 7808210dd10a2288eaaffa7269610ec36865138b239347b9d6c370226ec13b70

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 21a82b345ec1f0275d80abba7e1dff3bcbd0272e7ba98f527d68d27a4b38a25a
MD5 7097bad87ba6e3e690cb37568f4dd361
BLAKE2b-256 4b856642d5f3d7fe23b2d77a6604c9f560074fee45348f13f9d5c5bb0ae82dce

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a07ce96a0d505c4efbb03d4cb5d0cea45a16f467dc26d1c360eee97077a1e8fd
MD5 23f4b2952213077913700ed52ca8509c
BLAKE2b-256 124a556449e4937ebf658098236eac90badee10925c7c1d302a1e7ad1c80d778

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.5-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 88745bdc7c97e1fc0c324bd07be02f2e876e2509d98fa5e0bbe4fbb7093350a6
MD5 032196348cd150f69f9bb7fd54d613e5
BLAKE2b-256 f19b204f8fe833d43df638311cf2dc23fa82e052c15d0da904884794ce039c07

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.5-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 a7872076b385e0b2968c87add800eb8ffd12d0cb8a5e970ccf95db926687dd84
MD5 13b7bfb4933a1c28d21ef8d6641294f9
BLAKE2b-256 c885c271f7cb7a457ef2f19c3ad1a8cbb3534fb402b2b25b809f05a8cd9b4070

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4d814d9ed0164dfd88667997df7dcc45d55e2dd2b2858392570cec5992b83563
MD5 569716bc0cd6f33e63cb2135ea2454d0
BLAKE2b-256 8dfe15712da378a9fa3ca56b51e2036eb7df22d3f4c493a0bfe8af643c68c68f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 79f1c451826476ff966cc07f86ca1f21a7acbded8e102713935eecdf89f96dc7
MD5 bec6f7194ee852691758bd8c0df072e4
BLAKE2b-256 bf709553f1a9c82c1686e35442eba12f8392c30eb6647f1e7a42ef222a3aee75

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.5-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1f8db201703f8eb28d0de7eb3c685aa52bbbce05074c65ba533b289fdb138572
MD5 b904c8d972259b04c8d2b11b8458a971
BLAKE2b-256 e285f4559665bb31e41c31806673007a1b06e07f12180a7c13bd39198b1e510c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: rugo-0.1.5-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.5-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 9920a9d6c1b2ea46ed776fec1bfe458e577e48f00c45fe502fa8e75432d6b133
MD5 e04aee3969247222b49905735e2e3a76
BLAKE2b-256 968c9ce23ac628a679c88c50477acccb3bebca278023294b64086d37bc97d8f5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3fffbab46b909603b1f9de7ea93f0912783975aa7e8152a898342c637c43eaf3
MD5 0bf2c329c843d1a36522c2aff5e87515
BLAKE2b-256 83435847f0859ec072285a02ee37f215866e99a3850961fde92ac4f5ef64b0cd

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: rugo-0.1.5-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 88.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.5-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f46740efdc321bf20583a6e096d1e99859d4e696c4c98279e60c132905ab684a
MD5 bfeaca444c26f95cc072c8595d791215
BLAKE2b-256 af0813438c53bc57e8dc747e6018da9869ad13b56732eae73ecf2b040987d6ec

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: rugo-0.1.5-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 90.7 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.5-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 eac38b6ca0d5411fa0c6d4160a4cf41803c9a6dcd90ac073a4fd2f5a1eda6517
MD5 4b2f665e7c6a174835115b6057225467
BLAKE2b-256 cb69a873532869441bd309d77f75b27b21ed1e06b6cbb065e99b8311b5526980

See more details on using hashes here.

Provenance

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