Parquet Reader
Project description
rugo
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
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes and add tests
- Run the test suite:
make test - Run linting:
make lint - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rugo-0.1.1.tar.gz.
File metadata
- Download URL: rugo-0.1.1.tar.gz
- Upload date:
- Size: 113.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5749c940b42305cb1ce42220d58671ab396b87092a93e39a752ce8a16796e8bd
|
|
| MD5 |
782f616eae9319bcdddb01c44645add3
|
|
| BLAKE2b-256 |
1182bc28424fe148b75e348bd1b00a52c64290e3d4648a2f6a2160a481992033
|
Provenance
The following attestation bundles were made for rugo-0.1.1.tar.gz:
Publisher:
release.yml on mabel-dev/rugo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rugo-0.1.1.tar.gz -
Subject digest:
5749c940b42305cb1ce42220d58671ab396b87092a93e39a752ce8a16796e8bd - Sigstore transparency entry: 569776012
- Sigstore integration time:
-
Permalink:
mabel-dev/rugo@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Branch / Tag:
refs/tags/0.1.1-a - Owner: https://github.com/mabel-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Trigger Event:
release
-
Statement type:
File details
Details for the file rugo-0.1.1-cp312-cp312-musllinux_1_1_x86_64.whl.
File metadata
- Download URL: rugo-0.1.1-cp312-cp312-musllinux_1_1_x86_64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.12, musllinux: musl 1.1+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3ef570af0fd88c01cee9a97fe892e230a792c3ec2ee50269ea4bcb11aa12171
|
|
| MD5 |
71c1550d5d054bcde97d77947723f71b
|
|
| BLAKE2b-256 |
a72d3a529fe29544cc0994c0a0a87d3c3bcb75c2d0006e663cdeb025d20210ea
|
Provenance
The following attestation bundles were made for rugo-0.1.1-cp312-cp312-musllinux_1_1_x86_64.whl:
Publisher:
release.yml on mabel-dev/rugo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rugo-0.1.1-cp312-cp312-musllinux_1_1_x86_64.whl -
Subject digest:
d3ef570af0fd88c01cee9a97fe892e230a792c3ec2ee50269ea4bcb11aa12171 - Sigstore transparency entry: 569776068
- Sigstore integration time:
-
Permalink:
mabel-dev/rugo@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Branch / Tag:
refs/tags/0.1.1-a - Owner: https://github.com/mabel-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Trigger Event:
release
-
Statement type:
File details
Details for the file rugo-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: rugo-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 671.5 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
16589f8697fb835d07a6a06e2a0ffa1837f19bea248e23f89edd85a9c9d74c5c
|
|
| MD5 |
6fe64ec640ac0db079825ad7e6c62a2e
|
|
| BLAKE2b-256 |
667c20202a1d4c84049f3d3ed1cef83b4ea4e76405209bcf926e1e9e0326a09f
|
Provenance
The following attestation bundles were made for rugo-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on mabel-dev/rugo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rugo-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
16589f8697fb835d07a6a06e2a0ffa1837f19bea248e23f89edd85a9c9d74c5c - Sigstore transparency entry: 569776072
- Sigstore integration time:
-
Permalink:
mabel-dev/rugo@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Branch / Tag:
refs/tags/0.1.1-a - Owner: https://github.com/mabel-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Trigger Event:
release
-
Statement type:
File details
Details for the file rugo-0.1.1-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: rugo-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 79.2 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94eb9a32d35696ccd6ae25d384c32bace373ad5a89a6d5cbd4252ec838d69b70
|
|
| MD5 |
c3e0f0a59bac7806d4a468846fa72685
|
|
| BLAKE2b-256 |
208741472f9f81ee6b4809103cf3b30a3de2ef022b22b4669e3833e9b70d2039
|
Provenance
The following attestation bundles were made for rugo-0.1.1-cp312-cp312-macosx_11_0_arm64.whl:
Publisher:
release.yml on mabel-dev/rugo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rugo-0.1.1-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
94eb9a32d35696ccd6ae25d384c32bace373ad5a89a6d5cbd4252ec838d69b70 - Sigstore transparency entry: 569776093
- Sigstore integration time:
-
Permalink:
mabel-dev/rugo@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Branch / Tag:
refs/tags/0.1.1-a - Owner: https://github.com/mabel-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Trigger Event:
release
-
Statement type:
File details
Details for the file rugo-0.1.1-cp312-cp312-macosx_10_9_x86_64.whl.
File metadata
- Download URL: rugo-0.1.1-cp312-cp312-macosx_10_9_x86_64.whl
- Upload date:
- Size: 80.8 kB
- Tags: CPython 3.12, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
08f3e3c20f1c94ba23af6ed72bf0f783ec3b419ae5fe728acb4b3516c23c58ad
|
|
| MD5 |
47432f0414eb43f6d4a2d0df301538d5
|
|
| BLAKE2b-256 |
29bdb488920c3ec5bf09683ff37653b44941d20bfce0d824cd7d1cc053469720
|
Provenance
The following attestation bundles were made for rugo-0.1.1-cp312-cp312-macosx_10_9_x86_64.whl:
Publisher:
release.yml on mabel-dev/rugo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rugo-0.1.1-cp312-cp312-macosx_10_9_x86_64.whl -
Subject digest:
08f3e3c20f1c94ba23af6ed72bf0f783ec3b419ae5fe728acb4b3516c23c58ad - Sigstore transparency entry: 569776131
- Sigstore integration time:
-
Permalink:
mabel-dev/rugo@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Branch / Tag:
refs/tags/0.1.1-a - Owner: https://github.com/mabel-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Trigger Event:
release
-
Statement type:
File details
Details for the file rugo-0.1.1-cp311-cp311-musllinux_1_1_x86_64.whl.
File metadata
- Download URL: rugo-0.1.1-cp311-cp311-musllinux_1_1_x86_64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.11, musllinux: musl 1.1+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
481573d603c208c8baef93342e0b32b55f03b9966cae1db6883c05e6ef43b7af
|
|
| MD5 |
712b41b13fda4012e42b370419d9c0a5
|
|
| BLAKE2b-256 |
03a9f28c4078c2e2f9d0b5bf28920efcf632cfcc0331d99ea6657397d2641fae
|
Provenance
The following attestation bundles were made for rugo-0.1.1-cp311-cp311-musllinux_1_1_x86_64.whl:
Publisher:
release.yml on mabel-dev/rugo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rugo-0.1.1-cp311-cp311-musllinux_1_1_x86_64.whl -
Subject digest:
481573d603c208c8baef93342e0b32b55f03b9966cae1db6883c05e6ef43b7af - Sigstore transparency entry: 569776049
- Sigstore integration time:
-
Permalink:
mabel-dev/rugo@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Branch / Tag:
refs/tags/0.1.1-a - Owner: https://github.com/mabel-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Trigger Event:
release
-
Statement type:
File details
Details for the file rugo-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: rugo-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 665.7 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d9a97cb6205da887512d3583f70a221776fd7f8de2042140f1c40420d1b3fe48
|
|
| MD5 |
2b18e1dbe1f7d65d9cd783de1e6d6595
|
|
| BLAKE2b-256 |
116755e9c1891f9a5e63e161ddc79904c615826d5939cd1758cc3ca6f439f3da
|
Provenance
The following attestation bundles were made for rugo-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on mabel-dev/rugo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rugo-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
d9a97cb6205da887512d3583f70a221776fd7f8de2042140f1c40420d1b3fe48 - Sigstore transparency entry: 569776060
- Sigstore integration time:
-
Permalink:
mabel-dev/rugo@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Branch / Tag:
refs/tags/0.1.1-a - Owner: https://github.com/mabel-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Trigger Event:
release
-
Statement type:
File details
Details for the file rugo-0.1.1-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: rugo-0.1.1-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 78.8 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6febc14e99c3a17c3103015688e06755e3e44bddcc87c6eefcb53f372e4234cc
|
|
| MD5 |
ec692700b1c88a1b0093fa7a14108c21
|
|
| BLAKE2b-256 |
a0e0cb64bee8f006c67ac08406b970ce9c16ccff3486a2a7bc31bda2821c7d4a
|
Provenance
The following attestation bundles were made for rugo-0.1.1-cp311-cp311-macosx_11_0_arm64.whl:
Publisher:
release.yml on mabel-dev/rugo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rugo-0.1.1-cp311-cp311-macosx_11_0_arm64.whl -
Subject digest:
6febc14e99c3a17c3103015688e06755e3e44bddcc87c6eefcb53f372e4234cc - Sigstore transparency entry: 569776146
- Sigstore integration time:
-
Permalink:
mabel-dev/rugo@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Branch / Tag:
refs/tags/0.1.1-a - Owner: https://github.com/mabel-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Trigger Event:
release
-
Statement type:
File details
Details for the file rugo-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl.
File metadata
- Download URL: rugo-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl
- Upload date:
- Size: 80.5 kB
- Tags: CPython 3.11, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72c862187c537c546aba8a1824eeb89d8e5c19e915b3c111f6e4e1a2037d9855
|
|
| MD5 |
09d8a219c4f7e7e8ff89154b4f75cb6b
|
|
| BLAKE2b-256 |
51b205fda0e02ab209244e1092f016e237b6bd3644cf664b880944250ab091ec
|
Provenance
The following attestation bundles were made for rugo-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl:
Publisher:
release.yml on mabel-dev/rugo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rugo-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl -
Subject digest:
72c862187c537c546aba8a1824eeb89d8e5c19e915b3c111f6e4e1a2037d9855 - Sigstore transparency entry: 569776031
- Sigstore integration time:
-
Permalink:
mabel-dev/rugo@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Branch / Tag:
refs/tags/0.1.1-a - Owner: https://github.com/mabel-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Trigger Event:
release
-
Statement type:
File details
Details for the file rugo-0.1.1-cp310-cp310-musllinux_1_1_x86_64.whl.
File metadata
- Download URL: rugo-0.1.1-cp310-cp310-musllinux_1_1_x86_64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.10, musllinux: musl 1.1+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad7c5371b61bec7b7df8d4a8b21382bab93dbcb38bd29ca66fca804cc5a3b398
|
|
| MD5 |
279e41edbbd7486c691ef68132cd5b24
|
|
| BLAKE2b-256 |
c4cb38760aa044006c4293010647c085d608f302ac25dae661bb46a4af6c13bf
|
Provenance
The following attestation bundles were made for rugo-0.1.1-cp310-cp310-musllinux_1_1_x86_64.whl:
Publisher:
release.yml on mabel-dev/rugo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rugo-0.1.1-cp310-cp310-musllinux_1_1_x86_64.whl -
Subject digest:
ad7c5371b61bec7b7df8d4a8b21382bab93dbcb38bd29ca66fca804cc5a3b398 - Sigstore transparency entry: 569776122
- Sigstore integration time:
-
Permalink:
mabel-dev/rugo@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Branch / Tag:
refs/tags/0.1.1-a - Owner: https://github.com/mabel-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Trigger Event:
release
-
Statement type:
File details
Details for the file rugo-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: rugo-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 653.3 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66f249ffe8d9b1c8c3631cbd3832b6504ec603500408ce7285eec3c8e1e970b3
|
|
| MD5 |
ca9b4b00b4d2df40fa76dac3fd91ea22
|
|
| BLAKE2b-256 |
0552bd5e993252f6efa53959cc4f62c6fa4f664e3653e2d9866f477ce07a7d04
|
Provenance
The following attestation bundles were made for rugo-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on mabel-dev/rugo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rugo-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
66f249ffe8d9b1c8c3631cbd3832b6504ec603500408ce7285eec3c8e1e970b3 - Sigstore transparency entry: 569776058
- Sigstore integration time:
-
Permalink:
mabel-dev/rugo@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Branch / Tag:
refs/tags/0.1.1-a - Owner: https://github.com/mabel-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Trigger Event:
release
-
Statement type:
File details
Details for the file rugo-0.1.1-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: rugo-0.1.1-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 79.2 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
28575760e6edae733d7d6f51872d0f0f8df332e43fad3b08b25f4f9948d5b995
|
|
| MD5 |
6e27bfc841676b66eddc818207fc16e6
|
|
| BLAKE2b-256 |
666bc7ce87a8fb55bff02a0e3d57d766f7f81e3c2386defa94501981c5c7f783
|
Provenance
The following attestation bundles were made for rugo-0.1.1-cp310-cp310-macosx_11_0_arm64.whl:
Publisher:
release.yml on mabel-dev/rugo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rugo-0.1.1-cp310-cp310-macosx_11_0_arm64.whl -
Subject digest:
28575760e6edae733d7d6f51872d0f0f8df332e43fad3b08b25f4f9948d5b995 - Sigstore transparency entry: 569776033
- Sigstore integration time:
-
Permalink:
mabel-dev/rugo@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Branch / Tag:
refs/tags/0.1.1-a - Owner: https://github.com/mabel-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Trigger Event:
release
-
Statement type:
File details
Details for the file rugo-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl.
File metadata
- Download URL: rugo-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl
- Upload date:
- Size: 80.9 kB
- Tags: CPython 3.10, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3dd318a02068d82e79d2d91cd0be93d1ef1418001ba46a198b0d302a71191367
|
|
| MD5 |
b8aaa6a51b7da7abd2234d795a544d79
|
|
| BLAKE2b-256 |
e8215341159e0fd5846dff9498027f9d95908590491f3debabb3252601997b0d
|
Provenance
The following attestation bundles were made for rugo-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl:
Publisher:
release.yml on mabel-dev/rugo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rugo-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl -
Subject digest:
3dd318a02068d82e79d2d91cd0be93d1ef1418001ba46a198b0d302a71191367 - Sigstore transparency entry: 569776041
- Sigstore integration time:
-
Permalink:
mabel-dev/rugo@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Branch / Tag:
refs/tags/0.1.1-a - Owner: https://github.com/mabel-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Trigger Event:
release
-
Statement type:
File details
Details for the file rugo-0.1.1-cp39-cp39-musllinux_1_1_x86_64.whl.
File metadata
- Download URL: rugo-0.1.1-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5db6d86489fa4ee7ef1d1f6fd6cac5270a96372f69cf193cbb8bbeb87a17fce
|
|
| MD5 |
b66f85f85283d1c17c790475118f96e7
|
|
| BLAKE2b-256 |
38df0735238dcd2057f9b2536a5b0d1fc3ab45ff40767c908d45c884b2201796
|
Provenance
The following attestation bundles were made for rugo-0.1.1-cp39-cp39-musllinux_1_1_x86_64.whl:
Publisher:
release.yml on mabel-dev/rugo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rugo-0.1.1-cp39-cp39-musllinux_1_1_x86_64.whl -
Subject digest:
d5db6d86489fa4ee7ef1d1f6fd6cac5270a96372f69cf193cbb8bbeb87a17fce - Sigstore transparency entry: 569776099
- Sigstore integration time:
-
Permalink:
mabel-dev/rugo@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Branch / Tag:
refs/tags/0.1.1-a - Owner: https://github.com/mabel-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Trigger Event:
release
-
Statement type:
File details
Details for the file rugo-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: rugo-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 652.0 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6dfdc29c4a94d32263df713724211f7d382fb2156b16645f4e6493ecc4eff3ed
|
|
| MD5 |
b4a50b28ac86f12932cdd2196a2a278f
|
|
| BLAKE2b-256 |
642c71831c1ce0da0b6e2ea1a92e4249d1b29817c3c8468da3080e413fe660d6
|
Provenance
The following attestation bundles were made for rugo-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on mabel-dev/rugo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rugo-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
6dfdc29c4a94d32263df713724211f7d382fb2156b16645f4e6493ecc4eff3ed - Sigstore transparency entry: 569776105
- Sigstore integration time:
-
Permalink:
mabel-dev/rugo@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Branch / Tag:
refs/tags/0.1.1-a - Owner: https://github.com/mabel-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Trigger Event:
release
-
Statement type:
File details
Details for the file rugo-0.1.1-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: rugo-0.1.1-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 79.2 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64906c24b5ac62d3419cdbd812e631c1c9f827c58bb466b8ba78be782b3dd027
|
|
| MD5 |
d6e19461694a29554a8ac09ce8f4419b
|
|
| BLAKE2b-256 |
694aa89674ef6d70c81186954693515c5179a089edfd7fcef5b0f1999ab5a338
|
Provenance
The following attestation bundles were made for rugo-0.1.1-cp39-cp39-macosx_11_0_arm64.whl:
Publisher:
release.yml on mabel-dev/rugo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rugo-0.1.1-cp39-cp39-macosx_11_0_arm64.whl -
Subject digest:
64906c24b5ac62d3419cdbd812e631c1c9f827c58bb466b8ba78be782b3dd027 - Sigstore transparency entry: 569776019
- Sigstore integration time:
-
Permalink:
mabel-dev/rugo@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Branch / Tag:
refs/tags/0.1.1-a - Owner: https://github.com/mabel-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Trigger Event:
release
-
Statement type:
File details
Details for the file rugo-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl.
File metadata
- Download URL: rugo-0.1.1-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f123eda0b14f4748dca1358ffa928ac64b87bed7088a5e3dfdb4b33c43d5a32e
|
|
| MD5 |
e4e2a656142bcc1fcad90bb79889f2ed
|
|
| BLAKE2b-256 |
4c581fb6f8e004fe8600bb6767c36192eb6cb85c8f25406dd3d79943220b234f
|
Provenance
The following attestation bundles were made for rugo-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl:
Publisher:
release.yml on mabel-dev/rugo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rugo-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl -
Subject digest:
f123eda0b14f4748dca1358ffa928ac64b87bed7088a5e3dfdb4b33c43d5a32e - Sigstore transparency entry: 569776086
- Sigstore integration time:
-
Permalink:
mabel-dev/rugo@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Branch / Tag:
refs/tags/0.1.1-a - Owner: https://github.com/mabel-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@be314f0cffbb397372f0d9f6e159bdcb3fa8334f -
Trigger Event:
release
-
Statement type: