Skip to main content
Change of provenance

The repository or configuration that created this release differ from a previous release. View details.

pqbench

PyO3 bindings for pqbench. pip install builds a native wheel; a separate pqbench binary is not required. Two surfaces, one wheel:

  • pqbench.native — the commands: one function per library path, with the same arguments. Every name is the Rust function of the same path.
  • pqbench — the ergonomic surface over them: the client handles every command takes (Config, Dialect, Lake, Layer, Workspace) and walk, the whole-metastore walk composed once.

Install

pip install pqbench

The wheel carries every storage backend (delta-s3, iceberg-s3), so s3:// reads and Delta/Iceberg tables work out of the box. A storage read authenticates with the credentials= argument (a Credentials record) or, for bytemass, with env on its request — or with the process environment.

From a checkout:

pip install maturin
maturin develop --manifest-path python/Cargo.toml

The commands

Each command is the library function of the same path, under pqbench.native, and takes the handles and the resource's name like the Rust signature: the name is the AIP resource name a parent record carries, so a record feeds the next command as it is. credentials.get takes a table's name and returns its lease, the Credentials record a storage read takes, and a record is its model's class: record["path"], record.path and record.asdict() agree.

They are the walk's own pipeline — metastore, catalog, schema, table, credentials, partition, file, bytemass — and they stop at bytemass: the commands downstream of a byte-mass stream (viz, diff, profile, experiment), the standalone codec benchmarks (lz, compression) and skill are separate tools, and are not bound.

import asyncio
import pqbench
import pqbench.native

async def main():
    workspace = pqbench.Workspace(pqbench.Config("https://…", token="…"))
    lake = pqbench.Lake(workspace)

    # The walk, one function per resource. The I/O verbs are awaitable.
    await pqbench.native.metastore.get.get(workspace)
    await pqbench.native.catalog.get.get(workspace, "catalogs/dbx_samples")
    await pqbench.native.catalog.list.list(workspace)
    await pqbench.native.schema.list.list(workspace, "catalogs/dbx_samples")
    refs = await pqbench.native.table.list.list(
        workspace, "catalogs/dbx_samples/schemas/nyctaxi"
    )
    await pqbench.native.credentials.check.check(
        workspace, "catalogs/dbx_samples/schemas/nyctaxi/tables/trips"
    )
    # `credentials.get.get` is name -> lease: the lease is what a storage read
    # takes, from the table's name alone.
    credentials = await pqbench.native.credentials.get.get(workspace, refs[0]["name"])
    table = await pqbench.native.table.get.get(
        workspace,
        lake,
        refs[0]["name"], refs[0].get("uri"), credentials,
    )

    # `partition.list.list` and `file.list.list` stream (async iterators); the
    # single-value verbs are awaitable.
    async for partition in pqbench.native.partition.list.list(
        lake, table["name"], table["uri"], table.get("credentials"), 86_400_000
    ):
        async for file in pqbench.native.file.list.list(
            lake,
            table["name"],
            partition["uri"],
            partition.get("credentials"),
            partition["commit_versions"],
        ):
            # The pipeline stops here: `bytemass` measures the file's bytes.
            rows = await pqbench.native.bytemass.bytemass(
                lake, pqbench.native.BytemassRequest(inputs=[file.uri])
            )
            print(len(rows), file.uri)

asyncio.run(main())

The walk

walk is the one composition rather than a binding: it spans the catalog levels and descends every table the principal may read outside compute, with the tables in flight together (bounded by concurrency, 32 by default), and yields each table file.

async for file in pqbench.walk(workspace):
    print(file.uri)

catalog= descends one catalog instead of every readable one. A table that cannot be read is skipped (logged at debug), so a mixed metastore still walks; records stream, so the walk holds no more than a bounded queue of them.

The Unity Catalog API limits requests per endpoint and per workspace, so its calls are paced at requests_per_second — 15, one bucket per endpoint, and 0 turns pacing off. The storage reads are not paced: object storage has no such limit and retries its own. Anything skipped is counted in a warning when the walk ends, so a rate limit shows up as a count rather than as silently missing files.

bytemass is the last command: it reads what file.list.list yields — a path or URI per file — and returns one MassRow per column chunk.

rows = await pqbench.native.bytemass.bytemass(
    lake, pqbench.native.BytemassRequest(inputs=["s3://…/part-00000.parquet"])
)

samples/walk.py is a runnable walk over the whole metastore: it calls walk, spans every catalog and schema, descends the one catalog the principal may read outside compute, and prints each table file.

PQB_ENDPOINT=https://<workspace>.cloud.databricks.com PQB_TOKEN=<bearer> \
  AWS_REGION=us-east-2 python samples/walk.py

Configuration

Config(endpoint, token=None, dialect=Dialect.UNITY) carries the endpoint, the bearer, and the dialect (UNITY or ICEBERG); Layer(endpoint=None, token=None, dialect=None).resolve() combines configuration layers into a Config.

credentials is a Credentials record — what credentials.get returns — or the mapping of the same fields; a read given none falls back to the process environment. A request's env is the library's BTreeMap<String, String>, passed straight through. A BytemassRequest names inputs (paths or glob masks), env (the AWS_* options a remote read uses) and indexes (load the parquet page indexes too, one extra range per file).

Publish to PyPI

.github/workflows/release-pypi.yml builds manylinux and macOS wheels with maturin and uploads them with PyPI trusted publishing — no token is stored. It has its own dispatch, after the matching tag is released: gh workflow run release-pypi.yml, or Publish to PyPI from the Actions tab. Publishing is separate because PyPI names the workflow file that may upload, and its trusted publisher does not accept a job defined in a workflow that another workflow calls.

Its version is the workspace's: scripts/version.sh sync writes [workspace.package] version from Cargo.toml into python/Cargo.toml before maturin reads it, and make check-version fails when the two disagree — python/ is its own crate and cannot inherit it.

Before the first upload:

  1. On PyPI, add a pending publisher for this repository: owner pqbench, project pqbench, workflow release-pypi.yml, environment pypi.
  2. In the GitHub repository settings, create an environment named pypi.
  3. Run the Publish to PyPI workflow.

Metadata

Release files for pqbench 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Change of provenance

The repository or configuration that created these release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Source distribution (sdist)

Source distribution for pqbench 0.0.3
File Size Uploaded Provenance
pqbench-0.0.3.tar.gz 191.5 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for pqbench 0.0.3
File
pqbench-0.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 abi3 Linux glibc 2.17+ x86-64 Details
pqbench-0.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.9 abi3 Linux glibc 2.17+ ARM64 Details
pqbench-0.0.3-cp39-abi3-macosx_13_0_x86_64.whl CPython 3.9 abi3 macOS 13.0+ x86-64 Details
pqbench-0.0.3-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details

Total release size: 70.0 MB

Release files / pqbench-0.0.3.tar.gz

Change of provenance

This file belongs to a release with changed provenance: the repository or configuration that created the release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Download URL pqbench-0.0.3.tar.gz
Size 191.5 kB
Tags Source
SHA-256 checksum
How to use checksums
cddb65ec776dcca2a5bd2d1a99caa7d4ac9a391c19022fd0bebf5ef0540ddffb
BLAKE2b-256 checksum
How to use checksums
551a17f9c0f4aa66b99b74fb1c77bb0cb50b2a45e3a5daf15875bd833974c410
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / pqbench-0.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Change of provenance

This file belongs to a release with changed provenance: the repository or configuration that created the release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Download URL pqbench-0.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 18.4 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
c83360eef8f3b7b756b8f1d3abf3e630fd696716b79364fce195ba93b45e8b4c
BLAKE2b-256 checksum
How to use checksums
1f674eeedf1ee7851ba898e57c5370b919703c950f66b66d34b1c2bad5a418e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / pqbench-0.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Change of provenance

This file belongs to a release with changed provenance: the repository or configuration that created the release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Download URL pqbench-0.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 18.6 MB
Tags CPython 3.9 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
392bd2c011f0589601c3b4d622e1980805109288aaf39a653cbdbdf06edad418
BLAKE2b-256 checksum
How to use checksums
60ecd7ec64fcb1b2aa9aafe68a99397e245f7e89fd55a9383ba90353f42c7475
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / pqbench-0.0.3-cp39-abi3-macosx_13_0_x86_64.whl

Change of provenance

This file belongs to a release with changed provenance: the repository or configuration that created the release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Download URL pqbench-0.0.3-cp39-abi3-macosx_13_0_x86_64.whl
Size 16.7 MB
Tags CPython 3.9 abi3 macOS 13.0+ x86-64
SHA-256 checksum
How to use checksums
31221ad447b2d6291714b89443bbbca15e8abef6b9882cbfb6c1532fdf8594de
BLAKE2b-256 checksum
How to use checksums
c0831261aa766d092f8c9b836c4340e6988d67dfb2184615c48543d735cca928
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / pqbench-0.0.3-cp39-abi3-macosx_11_0_arm64.whl

Change of provenance

This file belongs to a release with changed provenance: the repository or configuration that created the release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Download URL pqbench-0.0.3-cp39-abi3-macosx_11_0_arm64.whl
Size 16.1 MB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b96cbd00ad5867b635a28a32f82513c4c18b10e069394ec46391fcca171f21e3
BLAKE2b-256 checksum
How to use checksums
e59f58da67a312d3c5e75eec7be42aad387152e0341b7c51eaaf5670279d24fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Security for pqbench 0.0.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Change of provenance

The configuration that created this release differs from a previous release.

While this could reflect a routine change by the project maintainers, it may also indicate that the release files have been compromised.

Configuration

  • Removed 0.0.2 publish-pypi.yml
  • Added 0.0.3 release-pypi.yml
Select from 5 files

Attestation for pqbench-0.0.3.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.0.3 This release

5 release files Change of provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page