Skip to main content

Parquet Metadata Reader

Project description

rugo

License Python Version PyPI Downloads

rugo is a C++17 and Cython powered Parquet metadata reader for Python. It delivers high-throughput metadata inspection without loading columnar data pages.

Key Features

  • Fast metadata extraction backed by an optimized C++17 parser and thin Python bindings.
  • Complete schema and row-group details, including encodings, codecs, offsets, bloom filter pointers, and custom key/value metadata.
  • Works with file paths, byte strings, and contiguous memoryviews for zero-copy parsing.
  • Optional schema conversion helpers for Orso.
  • No runtime dependencies beyond the Python standard library.

Installation

PyPI

pip install rugo

# Optional extras
pip install rugo[orso]
pip install rugo[dev]

From source

git clone https://github.com/mabel-dev/rugo.git
cd rugo
python -m venv .venv
source .venv/bin/activate
make update
make compile
pip install -e .

Requirements

  • Python 3.9 or newer
  • A C++17 compatible compiler (clang, gcc, or MSVC)
  • Cython and setuptools for source builds (installed by the commands above)

Quickstart

import rugo.parquet as parquet_meta

metadata = parquet_meta.read_metadata("example.parquet")

print(f"Rows: {metadata['num_rows']}")
print("Schema columns:")
for column in metadata["schema_columns"]:
    print(f"  {column['name']}: {column['physical_type']} ({column['logical_type']})")

first_row_group = metadata["row_groups"][0]
for column in first_row_group["columns"]:
    print(
        f"{column['name']}: codec={column['compression_codec']}, "
        f"nulls={column['null_count']}, range=({column['min']}, {column['max']})"
    )

read_metadata returns dictionaries composed of Python primitives, ready for JSON serialisation or downstream processing.

Returned metadata layout

{
    "num_rows": int,
    "schema_columns": [
        {
            "name": str,
            "physical_type": str,
            "logical_type": str,
            "nullable": bool,
        },
        ...
    ],
    "row_groups": [
        {
            "num_rows": int,
            "total_byte_size": int,
            "columns": [
                {
                    "name": str,
                    "path_in_schema": str,
                    "type": str,
                    "logical_type": str,
                    "num_values": Optional[int],
                    "total_uncompressed_size": Optional[int],
                    "total_compressed_size": Optional[int],
                    "data_page_offset": Optional[int],
                    "index_page_offset": Optional[int],
                    "dictionary_page_offset": Optional[int],
                    "min": Any,
                    "max": Any,
                    "null_count": Optional[int],
                    "distinct_count": Optional[int],
                    "bloom_offset": Optional[int],
                    "bloom_length": Optional[int],
                    "encodings": List[str],
                    "compression_codec": Optional[str],
                    "key_value_metadata": Optional[Dict[str, str]],
                },
                ...
            ],
        },
        ...
    ],
}

Fields that are not present in the source Parquet file are reported as None. Minimum and maximum values are decoded into Python types when possible; otherwise hexadecimal strings are returned.

Parsing options

All entry points share the same keyword arguments:

  • schema_only (default False): return only the top-level schema without row group details.
  • include_statistics (default True): skip min/max/num_values decoding when set to False.
  • max_row_groups (default -1): limit the number of row groups inspected; handy for very large files.
metadata = parquet_meta.read_metadata(
    "large_file.parquet",
    schema_only=False,
    include_statistics=False,
    max_row_groups=2,
)

Working with in-memory data

with open("example.parquet", "rb") as fh:
    data = fh.read()

from_bytes = parquet_meta.read_metadata_from_bytes(data)
from_view = parquet_meta.read_metadata_from_memoryview(memoryview(data))

read_metadata_from_memoryview performs zero-copy parsing when given a contiguous buffer.

Prototype Data Decoding (Experimental)

rugo includes a prototype decoder for reading actual column data from Parquet files. This is a limited, experimental feature designed for simple use cases and testing.

Supported Features

  • ✅ Uncompressed columns only (codec=UNCOMPRESSED)
  • ✅ PLAIN encoding only
  • int32, int64, and string (byte_array) types only

Unsupported Features

  • ❌ Compressed columns (SNAPPY, GZIP, ZSTD, etc.)
  • ❌ Dictionary encoding, Delta encoding, RLE_DICTIONARY
  • ❌ Other types (float, boolean, date, timestamp, complex types)
  • ❌ Nullable columns (columns with definition levels)
  • ❌ Multiple row groups (only first row group is decoded)

Usage

import rugo.parquet as parquet_meta

# Check if a file can be decoded with the prototype decoder
if parquet_meta.can_decode("data.parquet"):
    # Decode a specific column (returns a Python list)
    values = parquet_meta.decode_column("data.parquet", "column_name")
    print(values)  # e.g., [1, 2, 3, 4, 5] or ['a', 'b', 'c']
else:
    print("File cannot be decoded - use PyArrow or another full decoder")

See examples/decode_example.py for a complete demonstration.

Note: This decoder is a prototype for educational and testing purposes. For production use with full Parquet support, use PyArrow or FastParquet.

Optional Orso conversion

Install the optional extra (pip install rugo[orso]) to enable Orso helpers:

from rugo.converters.orso import extract_schema_only, rugo_to_orso_schema

metadata = parquet_meta.read_metadata("example.parquet")
relation = rugo_to_orso_schema(metadata, "example_table")
schema_info = extract_schema_only(metadata)

See examples/orso_conversion.py for a complete walkthrough.

Development

make update     # install build and test tooling (uses uv under the hood)
make compile    # rebuild the Cython extension with -O3 and C++17 flags
make test       # run pytest-based validation (includes PyArrow comparisons)
make lint       # run ruff, isort, pycln, cython-lint
make mypy       # type checking

make compile clears previous build artefacts before rebuilding the extension in-place.

Project layout

rugo/
├── rugo/__init__.py
├── rugo/parquet/
│   ├── metadata_reader.pyx
│   ├── metadata.cpp
│   ├── metadata.hpp
│   ├── decode.cpp
│   ├── decode.hpp
│   └── thrift.hpp
├── rugo/converters/orso.py
├── examples/
│   ├── comprehensive_metadata.py
│   ├── decode_example.py
│   └── orso_conversion.py
├── tests/
│   ├── data/
│   ├── test_all_metadata_fields.py
│   ├── test_decode.py
│   ├── test_logical_types.py
│   ├── test_orso_converter.py
│   └── test_statistics.py
├── Makefile
├── pyproject.toml
└── README.md

Status and limitations

  • Active development status (alpha); API details may evolve.
  • Primary focus is metadata inspection; the data decoder is a prototype with limited capabilities.
  • Requires a C++17 compiler when installing from source or editing the Cython bindings.
  • Bloom filter information is exposed via offsets and lengths; higher-level helpers are planned.

License

Licensed under the Apache License 2.0. See LICENSE for full terms.

Maintainer

Created and maintained by Justin Joyce (@joocer). Contributions are welcome via issues and pull requests.

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.8.tar.gz (140.7 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.8-cp312-cp312-musllinux_1_1_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ x86-64

rugo-0.1.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

rugo-0.1.8-cp312-cp312-macosx_11_0_arm64.whl (118.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

rugo-0.1.8-cp312-cp312-macosx_10_9_x86_64.whl (123.1 kB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

rugo-0.1.8-cp311-cp311-musllinux_1_1_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

rugo-0.1.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

rugo-0.1.8-cp311-cp311-macosx_11_0_arm64.whl (117.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

rugo-0.1.8-cp311-cp311-macosx_10_9_x86_64.whl (122.2 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

rugo-0.1.8-cp310-cp310-musllinux_1_1_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

rugo-0.1.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

rugo-0.1.8-cp310-cp310-macosx_11_0_arm64.whl (117.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

rugo-0.1.8-cp310-cp310-macosx_10_9_x86_64.whl (122.1 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

rugo-0.1.8-cp39-cp39-musllinux_1_1_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

rugo-0.1.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

rugo-0.1.8-cp39-cp39-macosx_11_0_arm64.whl (117.6 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

rugo-0.1.8-cp39-cp39-macosx_10_9_x86_64.whl (122.1 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: rugo-0.1.8.tar.gz
  • Upload date:
  • Size: 140.7 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.8.tar.gz
Algorithm Hash digest
SHA256 7cbad76a26abf30b9452d070992c6d5c97a20f64a2e55f16062cac80d4704642
MD5 cc0bc60f6d025809b5f9bfa2f73aea71
BLAKE2b-256 87597ebe4aa8c043d6c5a3861078feaa3c5d48014ac65f1b51a6a45708a140f7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.8-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 3f1dfc5dc4c31a140fa241e68359a8df93a1482a3da9870da4e1e7e9f6259464
MD5 bc0e4e0da3b6f08abc70042251bdd8ef
BLAKE2b-256 922f9eed80e4773db6bf9b287d053e900e4e396bc7bfa5e1cbc4948ee37b8bb8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3156375fb92a121dafc4bc8eb11386757474c2c6b7fdb102cbe58f4da4bce2a9
MD5 27f0ce1043362dd7fbc80d01371da6cc
BLAKE2b-256 3f747269cb9bfb6e66ed193a9da0338b1b6c73e4bbf133f7154249d8fdec8926

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b63ecfd7e8637cc5d1228247d543ffbd318068597fd0f5f4c0eef294a0158c35
MD5 7caa712b4fe5550c03b7bd426254d4f3
BLAKE2b-256 47eec2947e56e67b8216bb8b0a61da63b102f659ca7f4b7823deccf0f19b9dd5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.8-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 473755b6cdfee72bad161867f0d1e06e4a84ce55705fb42f9dab19841f1ca447
MD5 7136ca9412932531c3f0d9962323309c
BLAKE2b-256 3761b0112eb849d61dbddf742e183eea901284d598e8a6546a1d60baecdbebe9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.8-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 b46e5b60b0ec1e6e75d7ca153f4748c0f6495d6d70b20616ad0242df8b1e2525
MD5 1f3df5a0b369e6b1af61e53ea760194c
BLAKE2b-256 0e9a7e66492d86aa0aaf12de4e62d160a4a6e69c741231ce9effb7d9dfbc17df

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7930cf6104959c711488781d1aba985bade36ad6e9e1056be499ee8edd7cd532
MD5 dcbe9543f848d749b2b74374809da67c
BLAKE2b-256 62498bb9ed07c9a9116d029762cb576235a6cedb10e6855ecfe4a2520ed7aabf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e9e43f44e4ed53e0c2377ecfc1ce1dfa8b925d662c944dc4e1970ce92bb810cb
MD5 608720e70e444a11360cc09bc2ff63d7
BLAKE2b-256 9228c99188c5fca4d718b5ff0fa12294f436367edb98e5f2136032bba193a61d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.8-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c5329b3cf19f8b57f7408ba77438e9725a4fd82ce99dbc3665a5af6865ae9070
MD5 11734c148599a4edc2b53ad7ba39ade2
BLAKE2b-256 52e11c561da728c9329e2f1dad1f2b659ffdcee0e95a9ce1d36507ac57b24908

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.8-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 bea5fb629e0c3e99674cc286930a11ec62c55654ee028f3b69c0fd7debb7ebb2
MD5 8c59509198a5e8a5485e1d2121fbdda7
BLAKE2b-256 f29719d9dceb784812add34ffcde18b63e790c9ec801f670009498f39daf0e53

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 60798eedc4adbbc103e0a6b4a8f1fdca35fb0118b8c6e4620be92087b9180113
MD5 5f001556a5cd45276986e0fe475f41f7
BLAKE2b-256 c656099c562aa071ebbc5d92e4670fab36c9fd0f821649bf5ea9939f281b07f1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 25d846e5d11ef2948094079f6da9c2ecb4f06588a32afd6e5fabdd9e4fbff342
MD5 65559ab133ff19be710455fdbb21afae
BLAKE2b-256 04c69f9e15a99e19548d9f83dbed8a23570639be655cfa41cc4718b91d8a4276

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.8-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 84b28813a05de1bfbfaaaa4c290b6358d663cdb33309e173ae5aae4d369545b0
MD5 d3b26032f6ee82f652303f24f5ef2342
BLAKE2b-256 a7258972c586e80e7d7790d4c51ea949905087406c3b5b428dbbbcbb1c02b680

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: rugo-0.1.8-cp39-cp39-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 2.0 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.8-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 614e1f257864d9ce530dad179ed17cefb994a582eb065b9f0a15850a039e3643
MD5 8bef889448cdce1640885b2e6d30435d
BLAKE2b-256 e63506e68587e66b4393563ccc6020565f3911ac34ffbb3a1c0b5f8538b90520

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for rugo-0.1.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 00faa6e0ddc9b427a35fc638bf2b920de2e5fc40876cd9b24b59fad798fa73c6
MD5 ea080dc103acd6249d14a9f0b70837c6
BLAKE2b-256 91fd03190e5c572861326e66531ff04f93914e5a6f39f876a6f1ebb7cdd58597

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: rugo-0.1.8-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 117.6 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rugo-0.1.8-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e7b037e6a9b77e37bced83a4f0e24aabaa13b3ee3416d7707ec9a37e83e82c99
MD5 58da6fb88f0eda67dd082f31ce1770b2
BLAKE2b-256 1130b39f52b0319eda6191a0ec206a25b793442fc6da6131db46d2f472963ecd

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: rugo-0.1.8-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 122.1 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.8-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 eff0eb248c4c19e2eae85ded0e1f1501ae6c122c37e89e2ba0109579c4dbcf8b
MD5 61923c294c122cdc0f8b4a4e9916c965
BLAKE2b-256 917f756d084d7458770f4daffca6164d909eb770340c6e5ae523d342bb39e442

See more details on using hashes here.

Provenance

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