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.6.tar.gz (130.5 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.6-cp312-cp312-musllinux_1_1_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ x86-64

rugo-0.1.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (958.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

rugo-0.1.6-cp312-cp312-macosx_11_0_arm64.whl (103.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

rugo-0.1.6-cp312-cp312-macosx_10_9_x86_64.whl (107.1 kB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

rugo-0.1.6-cp311-cp311-musllinux_1_1_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

rugo-0.1.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (974.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

rugo-0.1.6-cp311-cp311-macosx_11_0_arm64.whl (102.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

rugo-0.1.6-cp311-cp311-macosx_10_9_x86_64.whl (106.2 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

rugo-0.1.6-cp310-cp310-musllinux_1_1_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

rugo-0.1.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (962.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

rugo-0.1.6-cp310-cp310-macosx_11_0_arm64.whl (102.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

rugo-0.1.6-cp310-cp310-macosx_10_9_x86_64.whl (106.5 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

rugo-0.1.6-cp39-cp39-musllinux_1_1_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

rugo-0.1.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (960.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

rugo-0.1.6-cp39-cp39-macosx_11_0_arm64.whl (102.8 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

rugo-0.1.6-cp39-cp39-macosx_10_9_x86_64.whl (106.5 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: rugo-0.1.6.tar.gz
  • Upload date:
  • Size: 130.5 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.6.tar.gz
Algorithm Hash digest
SHA256 ee4072f7c2b0904b3c948da188c78332212129a717c6ea28bd3b42b50fd2be08
MD5 9520e4aab6c1e9fa924c25d9fee0325a
BLAKE2b-256 5914a33201b7d385e7c180230bc9c6bd4beb2188fc4b3ef3b77bf0aa60579b0b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.6-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 2ec26bcae4300421823f2801cd8ce6d72351f88de905941e0c1f392205a0eb75
MD5 87166526a4bc36415421328b2cac1f0c
BLAKE2b-256 f643bd5a24d3dd3beda1539fadc114970ef61af64241849464027f9fc8236b43

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e5d55d92aafe763145d600f5c04bd8f6c2cde69db8aaa08875ea7ac0038989d7
MD5 ad5f00538e5d5710d7ced19ba195e6d7
BLAKE2b-256 e6eebdc0ff635fd7e352a66d9fbf6dbdb41181cd4300b778af0bc773b74a875e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fdb1d10fc315a6fd1d9c5e6a6aef74727ac0f5dc03450ec6c2bbcae29712569f
MD5 b7f238ec020b693ce66761c527b867fc
BLAKE2b-256 eddc77a4facb8c5989d91bd23f42abf6df40171db80816311b2dad915cd8a2f9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.6-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1d064508c783afcaa825f54866cf87a16fb7a19db7e262b6ef3820223cbac9af
MD5 4cbd0916068a7a0c0c09fe1ed9fe44be
BLAKE2b-256 f74580fd24b278f97849c2b9f063d04b7ec3ca0c3a9f82a84b4ef7ab13808f83

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.6-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 7f3a285fd36ef25a5fa30e15ee394717c588ea91f52edd78efc614284e8e6687
MD5 763872380fa86a9fe62237d8de64560d
BLAKE2b-256 4e6b955b469af1cada08eff397155833d481a1318bf6cac1bee445440ffec8cc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 495c878bf0680d0d819dcb3d91e0073da0a7a38b62080e2b5398e566e5183a71
MD5 a085d88a9960da7850084315f107fbad
BLAKE2b-256 e14ba312d660b8b93fc99ceba8eb4d12540345ff104bca8cda2d92900519f663

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 76d62cc71cd55bb4ec75c073cc4bdc467c781b772356e0bc9419249195484b91
MD5 9432f5bf4d68a05fe3b5cf706c80d50e
BLAKE2b-256 f1d7d304c5b267714205d34962691f5085d4d86f7c132b4d3796f3826a0fda73

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.6-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c657613cc414f26daf97d62431535f64ad4edd1b85dd43b611170140dcb13c9d
MD5 9380a12c949d4ba2ff58f4460a17421a
BLAKE2b-256 0d3323dc3c3561b900cb266229b71f1678e6b78caa7a74dd5b9088085dbb136b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.6-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 6b569df76accf30945302c4a0b3914dbcc64e93a04103c0bf97e54c94b67fad2
MD5 305ab9585c960c4e93aec0ddf5fd0dea
BLAKE2b-256 5ba3803a1c4edec338423dfc71f7a8dce5a61521b4cf917bd337384f45366a38

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0feb1224b336fcdea2f9acd018c44734b227aced97f4241a697106c4a47f3b9b
MD5 9978b874e16ed1b28e20fd4ed9efb82a
BLAKE2b-256 191ae5b2cd4f91d9579f5bca57ef1d202514cf04d436ba7d3231b6a5fe3ccbce

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8997cc716245b707ede29d691479e259dd2c9c970341ad9667dc160d17276f06
MD5 ddab48c666cb550a778b049577041884
BLAKE2b-256 b2546008be439e85f5da833f351e6d5862afff93aeece1f1f5e1577b8806c22a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.6-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1babd39c19c80595e50007d9e79ce8d2bf21e2d788d113e39bd22bd1a66fa9c9
MD5 123857a07a66f6647d93c2e2d5799e7d
BLAKE2b-256 c086b833ca46ed01a3a745db13e5df348641329fa375d04de772e33bc551de77

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: rugo-0.1.6-cp39-cp39-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 1.7 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.6-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 3c19b5834b37c197086ea59738b4d1704505dde124c3170263236143413eaf41
MD5 7b2fd59886087651632c6dc8dd16a3ac
BLAKE2b-256 cbfe5d9d87ef3bebe2cebac30af0558315901b658e0e41f483cbd60806b52631

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f51ad151bb4c34550574c0ec8bce3ae7d4b3a214e7b5f1b8bd6c5fab0d7035ff
MD5 b7c93e22d30c98eb86da705bf3d34304
BLAKE2b-256 6b54b9bddabf3c56d4761d34342cf331cfef24c5d02dc96ac54ce871d00160dd

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: rugo-0.1.6-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 102.8 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.6-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b9557755beadb6510c8a73750fa33ddb6dbf3d4d7a93307d4e3196e95c677eff
MD5 59d0296ae2cc34a8d82cee0f2df9326f
BLAKE2b-256 274c0ac5fe641605df4935fcddadb12378d58ff48465c5384ee4aca1c085d25a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: rugo-0.1.6-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 106.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.6-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2d605269cdd70283b5b3e61c35c943b876d3ebeafec813a98c5ce9ddbe7d47c0
MD5 83143ea63c3a644ecc6b4b67d6a16a5a
BLAKE2b-256 edfab874d5fe6d3ecc2cdd5230e8f4ac716a972b6aeeef5a5feb8befcf0f9cd0

See more details on using hashes here.

Provenance

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