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) andwalk, 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:
- On PyPI, add a pending publisher for this repository: owner
pqbench, projectpqbench, workflowrelease-pypi.yml, environmentpypi. - In the GitHub repository settings, create an environment named
pypi. - 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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| pqbench-0.0.3.tar.gz | 191.5 kB | With provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logSecurity 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
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 logA 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.