This release is a pre-release and may not be stable for production use.
pytest-boorst
Experimental Rust-powered acceleration for pytest.
This alpha accelerates duplicate parameter-ID bookkeeping and repeated directory discovery while pytest keeps control of test collection, fixtures, execution, and reporting. Acceleration is opt-in and guarded by a tested pytest version and implementation fingerprint. See the measured results.
Try the alpha
From your project directory, with its test dependencies already installed in its virtual environment, install from PyPI and run with uv:
uv pip install --no-deps pytest-boorst==0.1.0a7
uv run --no-sync pytest --boorst -q tests/
Or, with your project's virtual environment activated, use pip:
python -m pip install --no-deps pytest-boorst==0.1.0a7
pytest --boorst -q tests/
Both work in POSIX shells and PowerShell. Use your usual pytest arguments in place
of -q tests/, or omit them to use your project's configured test selection.
--no-deps preserves your installed pytest and other dependencies. --boorst
enables guarded acceleration for that pytest run, using your existing configuration
and leaving your lockfile unchanged.
Native wheels cover macOS Intel/ARM64, Windows x86-64/x86/ARM64, and Linux glibc/musl on x86-64/x86/ARM64. See the platform matrix. Other platforms can install the universal Python wheel: it retains the guarded directory optimization on supported Linux/macOS environments and uses stock IDs.
Boorst stays disabled when --boorst is omitted and PYTEST_BOORST=1 is unset. Use
-p no:boorst to prevent plugin loading; uninstalling the package restores ordinary
pytest behavior. If plugin autoload is disabled, load it explicitly with
pytest -p boorst --boorst -q tests/.
The environment variable PYTEST_BOORST=1 and the portable module command
python -m pytest_boorst also enable acceleration for existing integrations.
GitHub releases trigger the full CI matrix, then publish its tested distributions to PyPI using Trusted Publishing. Release assets contain the same wheels, source distribution and SHA-256 manifest.
Compatibility boundary
The parameter-ID adapter currently accelerates pytest 9.0.2, 9.0.3, and 9.1.1 on CPython 3.10–3.14 with the GIL enabled. It checks the original method's source fingerprint before changing it and restores its owned patch at session cleanup. Other pytest versions, modified methods, and missing or unloadable native extensions use stock parameter IDs. Installation does not require changing an already-installed pytest version. On older releases without pytest's Stash API, the plugin falls back quietly.
Only duplicate batches of at least 64 resolved, exact ASCII strings enter Rust. Small batches, unique IDs, Unicode, string subclasses, hidden IDs, and strict-ID errors use pytest behavior. Pytest still resolves custom IDs and calls user hooks exactly once. Unexpected native computation errors propagate rather than rerunning callbacks or hiding a bug.
On pytest 9.1.1, CPython 3.10–3.14, Linux and macOS, directory discovery can
reuse successful reports for directories with at least 32 distinct .py files
passed as plain arguments. Groups may be interleaved across several directories;
smaller groups retain stock discovery. Selected parent directories must not
contain one another. This Python optimization avoids recreating every
sibling collector for each requested file. It needs no native extension and does
not change the arguments, import unrequested tests, or replace file collection.
Directory reuse requires verified stock directory methods and discovery/report hooks. Custom discovery/report hooks, modified methods, selectors, duplicate paths, symlinks, overlapping parent directories, doctest-module mode, last-failed/failed-first modes, and debug tracing use stock discovery. Changed hooks, plugins, or collection options stop reuse; changed directory metadata invalidates the report. Windows currently uses stock discovery. Plugins inspecting discarded collectors or pytest's private collection-cache layout are outside this experimental compatibility boundary.
This uses a narrowly guarded private pytest method. The tested compatibility boundary does not establish compatibility with every possible third-party plugin or modification of pytest internals. Tests cover ordered IDs, phase outcomes, coverage, asyncio, xdist, callbacks, errors, and repeated invocation.
On releases with the Stash API, the header reports activation or fallback. The summary reports native ID batches, stock batches, and reused directory reports. Counters are per process; xdist workers collect their own batches, so the controller can report zero native calls.
Development
Install uv and Rust, then:
uv sync --locked --python 3.14
uv run --no-sync maturin develop --release --locked
uv run --no-sync ruff check .
uv run --no-sync ruff format --check .
uv run --no-sync pytest
cargo fmt --check
cargo clippy --locked --all-targets -- -D warnings
cargo test --locked --lib
uv.lock and Cargo.lock pin the development environments. Maturin builds the
PyO3 extension. GitHub CI installs built wheels and tests Python 3.10–3.14 on Linux,
plus macOS and Windows smoke coverage, and rebuilds the source distribution.
The Linux Python 3.12 wheel lane also runs the complete suite and installed-wheel
smoke checks with pytest 9.0.2 and 9.0.3, and verifies stock fallback on pytest 8.4.2.
Normal wheel-installation checks preserve pytest 6.2.5 and 7.4.4 in separate
environments and compare fallback IDs and phase outcomes against stock pytest.
An independent benchmark job retains raw timings and CPU/memory observations.
Performance evidence
Measured on Ubuntu 24.04, CPython 3.14.8, pytest 9.1.1 and Boorst 0.1.0a2. Times are medians of three fresh full pytest runs, including startup, collection, fixtures and execution. Percentages use unrounded medians.
| Synthetic workload | Stock pytest | Boorst enabled | Time change |
|---|---|---|---|
| 10,000 duplicate parameter IDs | 8.491 s | 6.685 s | 21.3% less |
| 10,000 colliding numeric-suffix IDs | 8.291 s | 6.495 s | 21.7% less |
| 384 explicit sibling test files | 7.755 s | 1.003 s | 87.1% less |
| 10,000 unique IDs (control) | 6.526 s | 6.511 s | 0.2% less |
| 8 IDs (control) | 0.244 s | 0.248 s | 1.7% more |
| Optimization | Why it helps |
|---|---|
| Duplicate-ID bookkeeping | Avoids rebuilding the used-ID set for every collision; PyO3 accelerates the bounded helper. |
| Directory-report reuse | Reuses a successful sibling-collector listing across file arguments, avoiding repeated scans and collector construction. This optimization uses Python. |
Most ID savings come from the algorithm: the optimized Python comparison took 6.739 s for duplicate IDs, versus 6.685 s with Rust. The isolated helper took 6.40 ms in Python and 4.34 ms in Rust; helper timings describe only that component. Unique and small controls made zero native calls. Ordinary suites can see little benefit or overhead; these synthetic results do not predict overall project CI.
Both harnesses verify exact ordered node IDs, setup/call/teardown outcomes and exit codes. The ID harness checks parity before timing; the discovery harness includes identical receipt recording during timing and disables bytecode writes for both modes. CI requires at least 10% duplicate-workload improvement and 5% directory-workload improvement. Separate compatibility tests cover callbacks, fixtures, errors, coverage, asyncio, xdist and fallback behavior. Multi-directory checks include interleaved groups, directory-local fixtures, syntax errors, independent directory invalidation and stock fallback for overlapping groups.
Sources: ID measurements, directory measurements, and the successful CI run.
Alpha 4 also covers independent sibling groups. A macOS ARM64 / CPython 3.14.7 / pytest 9.1.1 trial with the universal wheel measured three fresh full runs:
| Additional synthetic workload | Stock pytest | Boorst enabled | Time change |
|---|---|---|---|
| 384 files across four directories | 1.963 s | 0.973 s | 50.4% less |
Raw measurements record exact ordered-ID, phase and exit-code parity, with 380 directory reuses and zero native ID calls per run. This measures the Python discovery optimization. Alpha 3 uses stock discovery for this multi-directory plan. CI repeats the four-directory workload on Python 3.14.8 and retains its own raw receipt.
The benchmark job uses CPython 3.14.8. Existing projects can keep their own Python version; the module command uses their existing environment.
Reproduce with Python 3.14 and a release build:
uv sync --locked --python 3.14
uv run --no-sync maturin develop --release --locked
uv run --no-sync python benchmarks/run.py --size 10000 --repeats 3
uv run --no-sync python benchmarks/discovery.py --repeats 3
uv run --no-sync python benchmarks/discovery.py --directories 4 --repeats 3 --output benchmark-results-multiple-directories.json
See benchmark methodology for detailed compatibility controls and earlier public-project measurements.
Metadata
Release files for pytest-boorst 0.1.0a7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pytest_boorst-0.1.0a7.tar.gz | 76.6 kB | Details |
Built distributions (wheels)
Total release size: 7.8 MB
Release files / pytest_boorst-0.1.0a7.tar.gz
| Download URL | pytest_boorst-0.1.0a7.tar.gz |
|---|---|
| Size | 76.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d1a289c4a1ab6f4afc2aee7ccca99d0451dd88607944ba76db715875e58fcb27
|
|
BLAKE2b-256 checksum How to use checksums |
573cfadb1bef4ebf2773a153a3ea2815474171ec78c853e88eb2db86a541841a
|
| 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 8, 2026.
Transparency logRelease files / pytest_boorst-0.1.0a7-py3-none-any.whl
| Download URL | pytest_boorst-0.1.0a7-py3-none-any.whl |
|---|---|
| Size | 12.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
79ea5b8dc46d922965c2af1f216596d4fa8debba726c9f71491f72b066812ec7
|
|
BLAKE2b-256 checksum How to use checksums |
0ced477ec4c0669650676b51d4d11518747511ae9c107da20064611f08831286
|
| 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 8, 2026.
Transparency logRelease files / pytest_boorst-0.1.0a7-cp310-abi3-win_arm64.whl
| Download URL | pytest_boorst-0.1.0a7-cp310-abi3-win_arm64.whl |
|---|---|
| Size | 119.2 kB |
| Tags | CPython 3.10 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
53c3de1aa8ec216a07cb44c27bf269c7e2d2a10ef1e556ade7312ce4d4a0a504
|
|
BLAKE2b-256 checksum How to use checksums |
1ca36afeecd5680bdb55076279c93a6b12c03cba09cbae9f46a26763c950ba13
|
| 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 8, 2026.
Transparency logRelease files / pytest_boorst-0.1.0a7-cp310-abi3-win_amd64.whl
| Download URL | pytest_boorst-0.1.0a7-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 120.1 kB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
d8078e39eac4fed193bf36efc3a56a8504e23e58929ca00e719af6d8c1a77786
|
|
BLAKE2b-256 checksum How to use checksums |
f6fdd5157f8cce7d5c3864f9604918e4a31f30f442087933e10e03d6b180f48c
|
| 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 8, 2026.
Transparency logRelease files / pytest_boorst-0.1.0a7-cp310-abi3-win32.whl
| Download URL | pytest_boorst-0.1.0a7-cp310-abi3-win32.whl |
|---|---|
| Size | 115.3 kB |
| Tags | CPython 3.10 Windows x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
809fd2277238267757f4b46a91c78baa7b25f637c02b78b5eddf92966ecf2bc3
|
|
BLAKE2b-256 checksum How to use checksums |
48ce5db14ee5d20a75cb583c5ab02c4aba658c8d36807020673c1323c23d2f03
|
| 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 8, 2026.
Transparency logRelease files / pytest_boorst-0.1.0a7-cp310-abi3-musllinux_1_2_x86_64.whl
| Download URL | pytest_boorst-0.1.0a7-cp310-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
fc4966089202937e8cb6d2f25142fbed0edd4d2bc6edde5f847ae3b0fec3c9a2
|
|
BLAKE2b-256 checksum How to use checksums |
de984e3956acf02492ec484b1d1c618155723834c035f098f1c831af4b87c972
|
| 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 8, 2026.
Transparency logRelease files / pytest_boorst-0.1.0a7-cp310-abi3-musllinux_1_2_i686.whl
| Download URL | pytest_boorst-0.1.0a7-cp310-abi3-musllinux_1_2_i686.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
27fc5e304611fba469d41fefb2bde6bc7ada20037170ffec8f8580c2cf170c4f
|
|
BLAKE2b-256 checksum How to use checksums |
77d4145658d07af2a089c4aba9ad34f88c821d2e5b9730bf786051d0c685c5e5
|
| 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 8, 2026.
Transparency logRelease files / pytest_boorst-0.1.0a7-cp310-abi3-musllinux_1_2_aarch64.whl
| Download URL | pytest_boorst-0.1.0a7-cp310-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.10 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
c269e9e29fc8501da095569a595ba327952982ca5ddb5e8aa149a541fc34f288
|
|
BLAKE2b-256 checksum How to use checksums |
69a827172c3b888a364c0e48221e8bf60e468987e715042aafb8ba256260516e
|
| 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 8, 2026.
Transparency logRelease files / pytest_boorst-0.1.0a7-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pytest_boorst-0.1.0a7-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
62d61e77e6270f903bd4c97905f5518de3b935e17b0efc5a7917c1c72bc493ce
|
|
BLAKE2b-256 checksum How to use checksums |
c468115b31f0a67aa89a6ee059f96bddf1ebafe8ed31a948ed4cab672aff51eb
|
| 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 8, 2026.
Transparency logRelease files / pytest_boorst-0.1.0a7-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | pytest_boorst-0.1.0a7-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
2852888675a0e23326050e100b9cb00860706095ff8f20ad0573708d7778766a
|
|
BLAKE2b-256 checksum How to use checksums |
458039faaf284083dc55638e60f46da0cd7f72954de08185fbbf0ce4f660f81b
|
| 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 8, 2026.
Transparency logRelease files / pytest_boorst-0.1.0a7-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | pytest_boorst-0.1.0a7-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.0 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
c465f9b898d764dc464966fe898d3f76715feab817d42dd1a6eda192197cd8b9
|
|
BLAKE2b-256 checksum How to use checksums |
d12749f93cce6b7f7438bab13132112797915cf420c8c5b995e786c12b506b65
|
| 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 8, 2026.
Transparency logRelease files / pytest_boorst-0.1.0a7-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | pytest_boorst-0.1.0a7-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 233.9 kB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
75ff3e2fd01ad491e93bc7849406fabc021a8b94b9a11a91fda07d69ca0afcc4
|
|
BLAKE2b-256 checksum How to use checksums |
075db70d878d82efbfc6e5fec33fe3dfeb4507ed68a41269d8879635191fe45b
|
| 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 8, 2026.
Transparency logRelease files / pytest_boorst-0.1.0a7-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | pytest_boorst-0.1.0a7-cp310-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 233.0 kB |
| Tags | CPython 3.10 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
8eb2d8b0289ec5fa79c002aeecf84f9c38e61b3bed9300ac16e230ec9ad940bf
|
|
BLAKE2b-256 checksum How to use checksums |
aed3f865f879e398cf40dd3109bbad09b1794a22c1ad871d2cbaaee5f6a62107
|
| 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 8, 2026.
Transparency log