Modern Black-Scholes-Merton pricing, Greeks, and implied volatility for Python. Rust core. Drop-in py_vollib replacement.
Project description
pyvolr
Modern Black-Scholes-Merton pricing, Greeks, and implied volatility for Python. Rust core. Vectorized. Correct in the tails. Drop-in compatible with py_vollib/vollib.
from pyvolr import bs
bs.price("c", S=100, K=105, T=0.5, r=0.05, sigma=0.2) # 4.581680167540007
⚡ Performance
|
|
|
pyvolr owns implied vol at scale — 2× faster than fast-vollib's numba backend and 12× faster than opengreeks at 1M solves — and ties fast-vollib on the bundled five-Greeks kernel. It concedes bulk price throughput to fast-vollib's multithreaded numba kernels; its scalar-call latency, once 20–30× behind opengreeks' dedicated FFI, closed to under 2.5× with the 0.1.6 scalar fast path (both now sub-microsecond). The right chart is why that trade is worth making: pushed deep out-of-the-money, every fast 2026 entrant starts returning silently wrong implied vols (a wrong-constant σ, with onset between prices of ~1e-6 and ~1e-26), while pyvolr — with the other two Let's-Be-Rational descendants, vollib and py_vollib_vectorized — stays f64-exact down to prices of 1e-215.
| Workload | pyvolr | fast-vollib 0.1.6 ¹ | opengreeks 0.2.0 | vollib 1.0.11 ² |
|---|---|---|---|---|
bs.price, scalar ⁴ |
0.25 µs | 88 µs | 0.13 µs | 1.5 µs |
bs.price, 10k strikes |
326 µs | 174 µs | 223 µs | 14.7 ms |
bs.price, 1M strikes |
31.9 ms | 4.4 ms | 21.9 ms | 1.53 s |
bs.implied_vol, scalar |
0.50 µs | 156 µs | 0.21 µs | 13.2 µs |
bs.implied_vol, 10k |
449 µs | 727 µs | 3.35 ms | 97.7 ms |
bs.implied_vol, 1M |
27.1 ms | 53.2 ms | 331 ms | ≈9.7 s ³ |
bs.greeks (all 5), 10k |
251 µs | 191 µs | 566 µs | 47.0 ms |
bs.greeks (all 5), 1M |
5.0 ms | 5.2 ms | 56.1 ms | ≈4.7 s ³ |
¹ The numba backend — fast-vollib's fast CPU path (a plain pip install fast-vollib runs its numpy backend, 5–7× slower). One-time ~0.4 s JIT warmup per function excluded.
² vollib (the revived py_vollib upstream — see docs/why.md) is scalar-only pure Python: the migration baseline, not a vectorization competitor. pyvolr runs its workloads 45–360× faster in batch.
³ Extrapolated ×10 from the measured 100k-row time (scalar loop).
⁴ pyvolr's price uses the normalised-Black engine — ~1-ULP into the deep-OTM tail, ~2.3× slower than the textbook S·Φ(d1) − K·Φ(d2) form (that is opengreeks' per-core price edge). A deliberate trade; Greeks and IV are unaffected.
Also on the throughput chart: py_vollib_vectorized (numba, unmaintained since 2021), blackscholes (pure Python), QuantLib (C++ core, looped scalar), and quantforge (Rust + rayon, reduced-precision fast_erf; unmaintained since Sep 2025). pyvolr's implied_vol parallelises via rayon above N≈1k (greeks ≥4096); RAYON_NUM_THREADS=1 forces serial.
Numerical agreement: pyvolr matches every library above to f64 precision (~1e-13) on all well-posed inputs across price + 5 Greeks + IV (bench/sanity_check_competitors.py). The edges differ: blackscholes underflows deep-OTM prices to zero and quantforge hard-clamps Φ at ±8σ where pyvolr's erfcx-based cdf keeps the ~1e-50 price; the IV tail is the right chart, methodology in bench/compare_tail_accuracy.py (a known-σ ladder priced through pyvolr's mpmath-golden-pinned forward map).
Reproduce it all with just all, or per-chart via the recipes in the justfile (needs just + uv; uv builds the pinned environments on demand). Measured on an Apple M4 Pro: scalar rows on pyvolr 0.1.6 (the scalar fast path), vector rows and both charts unchanged from 0.1.5 — the fast path leaves the vectorized and IV code paths untouched. Competitor versions are pinned in the justfile.
📦 Install
pip install pyvolr
Or via uv:
uv pip install pyvolr
Pre-built wheels are published for Linux (x86_64, aarch64), macOS (Intel, Apple Silicon), and Windows (x86_64) across Python 3.10–3.14, plus a free-threaded build for 3.14t. (3.13t wheels were last published at pyvolr 0.1.3 — cibuildwheel 4 dropped Python 3.13 free-threading, which never left experimental status.)
Tested on
| 3.10 | 3.11 | 3.12 | 3.13 | 3.14 | |
|---|---|---|---|---|---|
| Linux | ✅ | ✅ | ✅ | ✅ | ✅ |
| macOS | ✅ | ✅ | ✅ | ✅ | ✅ |
| Windows | — | — | ✅ | ✅ | ✅ |
Every push and PR runs the full pytest + cargo test suites across the matrix above. Windows × {3.10, 3.11} are skipped intentionally to keep CI minutes reasonable — the wheels themselves still build for those combinations and are published. The free-threaded wheel (3.14t) is built and exercised through cibuildwheel's in-wheel test pass on every release across Linux/macOS/Windows, and on packaging-touching PRs via the wheel-smoke check.
From source (requires Rust):
git clone https://github.com/yipjunkai/pyvolr
cd pyvolr
uv venv --python 3.12 && source .venv/bin/activate
uv pip install -e ".[dev,test]"
maturin develop --release
🚀 Quick start
import numpy as np
from pyvolr import bs
# Scalar
bs.price("c", S=100, K=105, T=0.5, r=0.05, sigma=0.2)
# Vectorized — broadcast over any combination of inputs
strikes = np.linspace(80, 120, 41)
prices = bs.price("c", S=100, K=strikes, T=0.5, r=0.05, sigma=0.2)
# All five Greeks in one call
greeks = bs.greeks("c", S=100, K=strikes, T=0.5, r=0.05, sigma=0.2)
# {"delta": [...], "gamma": [...], "theta": [...], "vega": [...], "rho": [...]}
# Implied volatility from a market price
bs.implied_vol(price=5.20, flag="c", S=100, K=100, T=0.25, r=0.05)
# Broadcasting works in any dimension
strike_grid = np.linspace(80, 120, 5).reshape(-1, 1)
vol_grid = np.linspace(0.10, 0.40, 4).reshape(1, -1)
surface = bs.price("c", S=100, K=strike_grid, T=0.5, r=0.05, sigma=vol_grid)
# shape (5, 4)
# Black-76 for options on futures / forwards — same API, F replaces S, no q.
from pyvolr import black76
black76.price("c", F=100, K=105, T=0.5, r=0.05, sigma=0.2)
✨ Features
- Black-Scholes-Merton pricing — calls and puts with continuous dividend yield
- Black-76 pricing — European options on futures/forwards (
pyvolr.black76), same vectorized API asbs - Analytical Greeks — delta, gamma, theta, vega, rho (with documented sign and unit conventions)
- Robust implied volatility — Jäckel "Let's Be Rational" algorithm: rational-cubic initial guess plus Householder order-4 iteration converges to ~1e-13 precision in ≤2 iterations across the full no-arbitrage range
- Automatic parallelism on large batches —
implied_vol(above N≈1,000 rows) and the bundledgreekskernel (above N≈4,000) release the GIL and dispatch per-row work to rayon's global thread pool; setRAYON_NUM_THREADS=1to opt out - Full numpy broadcasting — any combination of inputs in any shape, scalar-in scalar-out
py_vollibdrop-in shims —pyvolr.compat.py_vollibmirrors the upstream module tree (includingpy_vollib.black) for one-import-line migration;pyvolr.compat.py_vollib_vectorizedmirrors the vectorized API (vectorized_*,get_all_greeks,price_dataframe)- Rust core, no compiler needed — abi3 wheels for Python 3.10–3.14 × {Linux, macOS, Windows}
- Free-threaded Python ready — a dedicated 3.14t wheel: with no GIL, every entry point scales across threads. On standard (GIL) builds, the large-batch
implied_vol(≥1k rows) and bundledgreeks(≥4k rows) kernels release the GIL while rayon works;priceand single-Greek calls hold it - Typed end-to-end — pyright-strict library code, full type stubs for the Rust extension
🗺️ Coming soon
- Bachelier (normal model, for negative rates) — with analytic implied-normal-vol inversion
- Higher-order Greeks (vanna, vomma, charm, speed, zomma, color)
- American options (Andersen-Lake-Offengenden spectral collocation)
- Volatility surface fitting (arbitrage-free eSSVI)
SIMD batch evaluation used to be on this list and was deliberately dropped: no vectorized math library currently meets pyvolr's precision bar on the erfc-dependent tails (~1 ULP against 60-digit references), and the crate forbids unsafe code. Batch throughput comes from rayon parallelism instead.
🔄 Migrating from py_vollib
Replace your imports — the signatures and 'c'/'p' flag convention are preserved exactly:
# Before
from py_vollib.black_scholes import black_scholes
from py_vollib.black_scholes.greeks.analytical import delta
from py_vollib.black_scholes.implied_volatility import implied_volatility
from py_vollib.black import black # futures options
# After
from pyvolr.compat.py_vollib.black_scholes import black_scholes
from pyvolr.compat.py_vollib.black_scholes.greeks.analytical import delta
from pyvolr.compat.py_vollib.black_scholes.implied_volatility import implied_volatility
from pyvolr.compat.py_vollib.black import black # futures options
The compat shim also preserves py_vollib's unit conventions: vega is per-1% vol, theta is per-day, rho is per-1% rate, and implied_volatility takes flag as its last argument. For new code, prefer the modern pyvolr.bs API — it accepts numpy arrays, broadcasts naturally, uses per-unit conventions consistently, and returns all Greeks in a single call.
Migrating from py_vollib_vectorized
pyvolr.compat.py_vollib_vectorized mirrors the vectorized API — the vectorized_* functions, get_all_greeks, and price_dataframe — with the same (quirky) argument orders, return_as values, and "Price"/"IV"/greek column names:
# Before
from py_vollib_vectorized import vectorized_black_scholes, vectorized_implied_volatility
# After
from pyvolr.compat.py_vollib_vectorized import vectorized_black_scholes, vectorized_implied_volatility
Two deliberate differences: importing the shim does not monkeypatch py_vollib (call the vectorized_* functions directly), and pandas is an optional dependency — return_as="dataframe"/"series" need it (pip install pyvolr[pandas]) and otherwise fall back to numpy with a one-time warning.
🤔 Why pyvolr exists
py_vollib spent six years abandoned (2020–2026) and hard-broken on Python 3.12+ — a transitive dependency imported DBL_MIN / DBL_MAX from CPython's internal _testcapi test module. pyvolr was built so that failure mode cannot recur: the numerical core is Rust and touches no CPython internals, and the release pipeline is engineered to survive its maintainer (GOVERNANCE.md).
In April 2026 the upstream was revived as vollib, which fixes the import error. It doesn't change the math: vollib remains scalar-only pure Python — 45–360× slower on the batch workloads in the table above — with no Python 3.14 or free-threaded wheels.
Full backstory, including the revival: docs/why.md.
📁 Project structure
Directory-level map; each module documents itself in its docstring/rustdoc header.
pyvolr/
├── crates/core/ # Rust numerical core (BSM, Black-76, Greeks, Jäckel IV, Φ/erfcx) + criterion benches
├── python/pyvolr/ # numpy-broadcasting public API, type stubs, py_vollib(+vectorized) compat shims
├── tests/ # pytest + hypothesis property tests
├── bench/ # dev-only speed/accuracy benchmarks vs the competitor field (not in CI)
├── fuzz/ # cargo-fuzz targets for the numerical core
├── tools/ # regenerable mpmath golden generator
├── docs/ # backstory (why.md) + chart assets
├── .github/ # CI/release workflows (all SHA-pinned) + helper scripts
└── justfile # benchmark-reproduction recipes (`just all`, `just perf-stat`, ...) via uv
📚 API reference
| Function | Returns | Vectorized over |
|---|---|---|
bs.price(flag, S, K, T, r, sigma, q=0) |
option price | all numeric inputs |
bs.delta(flag, S, K, T, r, sigma, q=0) |
∂Price/∂S | all numeric inputs |
bs.gamma(S, K, T, r, sigma, q=0) |
∂²Price/∂S² | all numeric inputs |
bs.vega(S, K, T, r, sigma, q=0) |
∂Price/∂σ (per unit vol) | all numeric inputs |
bs.theta(flag, S, K, T, r, sigma, q=0) |
−∂Price/∂T (per year) | all numeric inputs |
bs.rho(flag, S, K, T, r, sigma, q=0) |
∂Price/∂r (per unit r) | all numeric inputs |
bs.greeks(flag, S, K, T, r, sigma, q=0) |
dict of all five Greeks |
all numeric inputs |
bs.implied_vol(price, flag, S, K, T, r, q=0) |
σ (NaN on bound violation) | price + numeric inputs |
black76.price(flag, F, K, T, r, sigma) |
option price on a forward | all numeric inputs |
black76.{delta,gamma,vega,theta,rho}(...) |
Greeks for Black-76 | all numeric inputs |
black76.greeks(flag, F, K, T, r, sigma) |
dict of all five Greeks |
all numeric inputs |
black76.implied_vol(price, flag, F, K, T, r) |
σ (NaN on bound violation) | price + numeric inputs |
pyvolr.compat.py_vollib.… |
py_vollib-shaped scalars | n/a (scalar API) |
pyvolr.compat.py_vollib_vectorized.… |
arrays / DataFrame | all numeric inputs |
flag accepts 'c'/'C' (call), 'p'/'P' (put), or an array thereof.
Every function also accepts a keyword-only return_as: "numpy" (default — array, or scalar for scalar input), "dict" ({name: value}), or "dataframe" (a pandas DataFrame; pandas is an optional dependency, installed only if you use this mode).
implied_vol additionally accepts a keyword-only on_error for unsolvable inputs (price outside the no-arbitrage bounds, non-positive T/S/K, or non-finite input): "warn" (default — emit an ImpliedVolWarning and return NaN), "raise" (raise ImpliedVolError), or "ignore" (return NaN silently).
🛡️ Sustainability
py_vollib went dark for six years because nobody was paid to maintain it — its 2026 revival came only after the ecosystem had moved on. pyvolr is engineered to outlive its maintainer:
- One-click releases via release-please + PyPI Trusted Publishing — PyPI publication needs no stored credentials (OIDC), and release-please authenticates as a repo-scoped GitHub App rather than a user PAT, so the credential survives a maintainer handoff
- Release-gated differential tests against
py_vollib(Python 3.10 sidecar) — every release is blocked unless pyvolr still matches the reference - Wide CI matrix (Python 3.10–3.14 × Linux/macOS/Windows) — the specific failure mode that killed the predecessor
- All GitHub Actions pinned with weekly Dependabot bumps, hardening against supply-chain attacks
- Hand-off plan documented in GOVERNANCE.md
Commercial sponsorship channels will be added if demand warrants. For now the best support is real-world use, good bug reports, and PRs.
🤝 Contributing
See CONTRIBUTING.md. Particularly welcome: new pricing models (Bachelier, American), higher-order Greeks, and property tests for edge cases.
📄 License
Dual-licensed under MIT or Apache 2.0, at your option.
Algorithms are reimplemented from published references (Hull, Merton, Jäckel); no third-party source code is incorporated.
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
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 pyvolr-0.1.6.tar.gz.
File metadata
- Download URL: pyvolr-0.1.6.tar.gz
- Upload date:
- Size: 86.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
145117d13ce8f04e2d19df16d5e808a4ec32efb830281cc72f73682a2df92475
|
|
| MD5 |
c078588ed5e4bd8951eef194e71e3794
|
|
| BLAKE2b-256 |
dd5cdffd95b2577ca9aef56b80fbf05cbc16026b401ce21ec74054e67856b1e5
|
Provenance
The following attestation bundles were made for pyvolr-0.1.6.tar.gz:
Publisher:
release.yml on yipjunkai/pyvolr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyvolr-0.1.6.tar.gz -
Subject digest:
145117d13ce8f04e2d19df16d5e808a4ec32efb830281cc72f73682a2df92475 - Sigstore transparency entry: 2059334817
- Sigstore integration time:
-
Permalink:
yipjunkai/pyvolr@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/yipjunkai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyvolr-0.1.6-cp314-cp314t-win_amd64.whl.
File metadata
- Download URL: pyvolr-0.1.6-cp314-cp314t-win_amd64.whl
- Upload date:
- Size: 235.0 kB
- Tags: CPython 3.14t, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
08becc5c73d1dcb7b336764579395c1e8db91d8a52a685956cd4ecfda2026d0e
|
|
| MD5 |
3d8d4604ad12edd0f06a4931bb5e866a
|
|
| BLAKE2b-256 |
65c528f8990be42ec30a9f28cbd08fcaa21bc54597a539e65a0bc70a40a473e0
|
Provenance
The following attestation bundles were made for pyvolr-0.1.6-cp314-cp314t-win_amd64.whl:
Publisher:
release.yml on yipjunkai/pyvolr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyvolr-0.1.6-cp314-cp314t-win_amd64.whl -
Subject digest:
08becc5c73d1dcb7b336764579395c1e8db91d8a52a685956cd4ecfda2026d0e - Sigstore transparency entry: 2059335106
- Sigstore integration time:
-
Permalink:
yipjunkai/pyvolr@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/yipjunkai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyvolr-0.1.6-cp314-cp314t-win32.whl.
File metadata
- Download URL: pyvolr-0.1.6-cp314-cp314t-win32.whl
- Upload date:
- Size: 230.0 kB
- Tags: CPython 3.14t, Windows x86
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f04f15ab4950c081c9158bfa1bc4da92f04b2bedb11f4fd4dcf2139b426492eb
|
|
| MD5 |
4d39a6dfae6c82efdde5d67e572b3f90
|
|
| BLAKE2b-256 |
e1ba69f660fe8ae521f7533f5a0896871e2954a42dba802561a958f4061879c0
|
Provenance
The following attestation bundles were made for pyvolr-0.1.6-cp314-cp314t-win32.whl:
Publisher:
release.yml on yipjunkai/pyvolr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyvolr-0.1.6-cp314-cp314t-win32.whl -
Subject digest:
f04f15ab4950c081c9158bfa1bc4da92f04b2bedb11f4fd4dcf2139b426492eb - Sigstore transparency entry: 2059339055
- Sigstore integration time:
-
Permalink:
yipjunkai/pyvolr@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/yipjunkai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyvolr-0.1.6-cp314-cp314t-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pyvolr-0.1.6-cp314-cp314t-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 422.6 kB
- Tags: CPython 3.14t, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
736b53fbd4fcf287408959f09d132ad3f83ae868a8f51ecd45ba51f7dac341af
|
|
| MD5 |
51b4ab0d96e86f1fe804bc77fb1983a6
|
|
| BLAKE2b-256 |
5885277a69fdd11fbee9b17855eb8b492e92cf307b8010cc190f8be1d760bbef
|
Provenance
The following attestation bundles were made for pyvolr-0.1.6-cp314-cp314t-musllinux_1_2_x86_64.whl:
Publisher:
release.yml on yipjunkai/pyvolr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyvolr-0.1.6-cp314-cp314t-musllinux_1_2_x86_64.whl -
Subject digest:
736b53fbd4fcf287408959f09d132ad3f83ae868a8f51ecd45ba51f7dac341af - Sigstore transparency entry: 2059337423
- Sigstore integration time:
-
Permalink:
yipjunkai/pyvolr@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/yipjunkai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyvolr-0.1.6-cp314-cp314t-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pyvolr-0.1.6-cp314-cp314t-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 384.0 kB
- Tags: CPython 3.14t, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e556eae7c36139d521b5bc95860d5775d9ffed9d39e2fc80965529435518b8ae
|
|
| MD5 |
aef6bbc95b623447b97a631b6fc01feb
|
|
| BLAKE2b-256 |
e66eeb725db45ddb736da8623c22fe66f69a739dacdd04fec8633c9e725f0b72
|
Provenance
The following attestation bundles were made for pyvolr-0.1.6-cp314-cp314t-musllinux_1_2_aarch64.whl:
Publisher:
release.yml on yipjunkai/pyvolr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyvolr-0.1.6-cp314-cp314t-musllinux_1_2_aarch64.whl -
Subject digest:
e556eae7c36139d521b5bc95860d5775d9ffed9d39e2fc80965529435518b8ae - Sigstore transparency entry: 2059339625
- Sigstore integration time:
-
Permalink:
yipjunkai/pyvolr@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/yipjunkai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyvolr-0.1.6-cp314-cp314t-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pyvolr-0.1.6-cp314-cp314t-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 340.8 kB
- Tags: CPython 3.14t, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af7aa50c84171bbdb79330e19db50d66eb21cded84c994ac60bae33bfcf34792
|
|
| MD5 |
4cdcb91d975abd4ea4b931213520db51
|
|
| BLAKE2b-256 |
dba5e0e7bb155837ecb789d8992beb23b9b9e8075e2204fa75804e7f7616773f
|
Provenance
The following attestation bundles were made for pyvolr-0.1.6-cp314-cp314t-manylinux_2_28_x86_64.whl:
Publisher:
release.yml on yipjunkai/pyvolr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyvolr-0.1.6-cp314-cp314t-manylinux_2_28_x86_64.whl -
Subject digest:
af7aa50c84171bbdb79330e19db50d66eb21cded84c994ac60bae33bfcf34792 - Sigstore transparency entry: 2059337664
- Sigstore integration time:
-
Permalink:
yipjunkai/pyvolr@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/yipjunkai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyvolr-0.1.6-cp314-cp314t-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: pyvolr-0.1.6-cp314-cp314t-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 318.0 kB
- Tags: CPython 3.14t, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
740d48f37e4a716447d33bb7f2b1a2ab6878a2518c06f14eb2c4742578dcff03
|
|
| MD5 |
dbd7c7f53456b2d55246b90f6edbcdcb
|
|
| BLAKE2b-256 |
b95e4e3b9363bc431a121e7e4ad306bd4620ffc0891a8092ac1be854f76b6981
|
Provenance
The following attestation bundles were made for pyvolr-0.1.6-cp314-cp314t-manylinux_2_28_aarch64.whl:
Publisher:
release.yml on yipjunkai/pyvolr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyvolr-0.1.6-cp314-cp314t-manylinux_2_28_aarch64.whl -
Subject digest:
740d48f37e4a716447d33bb7f2b1a2ab6878a2518c06f14eb2c4742578dcff03 - Sigstore transparency entry: 2059335906
- Sigstore integration time:
-
Permalink:
yipjunkai/pyvolr@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/yipjunkai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyvolr-0.1.6-cp314-cp314t-macosx_11_0_arm64.whl.
File metadata
- Download URL: pyvolr-0.1.6-cp314-cp314t-macosx_11_0_arm64.whl
- Upload date:
- Size: 289.9 kB
- Tags: CPython 3.14t, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba8d3be7b114bb201ca9d377924733d60f2b0a8c4adeae5636d9e1b6eb4f29de
|
|
| MD5 |
113b6b52796114d4540dd9033d58b156
|
|
| BLAKE2b-256 |
c68bc5c82ceb8f2972a8c156faf533d57b9a0a7be4a0d97f497544ee0f444931
|
Provenance
The following attestation bundles were made for pyvolr-0.1.6-cp314-cp314t-macosx_11_0_arm64.whl:
Publisher:
release.yml on yipjunkai/pyvolr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyvolr-0.1.6-cp314-cp314t-macosx_11_0_arm64.whl -
Subject digest:
ba8d3be7b114bb201ca9d377924733d60f2b0a8c4adeae5636d9e1b6eb4f29de - Sigstore transparency entry: 2059338484
- Sigstore integration time:
-
Permalink:
yipjunkai/pyvolr@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/yipjunkai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyvolr-0.1.6-cp314-cp314t-macosx_10_15_x86_64.whl.
File metadata
- Download URL: pyvolr-0.1.6-cp314-cp314t-macosx_10_15_x86_64.whl
- Upload date:
- Size: 314.6 kB
- Tags: CPython 3.14t, macOS 10.15+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
354936fcecb088ae55ff6a4c51ccc51638e604cd2fc1d92d7d30cb7763cdfe8f
|
|
| MD5 |
dfbb90d93efcbe670e11c1082fbb273e
|
|
| BLAKE2b-256 |
c523834049ec2daeeaec2f9b7d768d75c25b45d7e0fb4d28fa5cb429f63f1475
|
Provenance
The following attestation bundles were made for pyvolr-0.1.6-cp314-cp314t-macosx_10_15_x86_64.whl:
Publisher:
release.yml on yipjunkai/pyvolr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyvolr-0.1.6-cp314-cp314t-macosx_10_15_x86_64.whl -
Subject digest:
354936fcecb088ae55ff6a4c51ccc51638e604cd2fc1d92d7d30cb7763cdfe8f - Sigstore transparency entry: 2059336170
- Sigstore integration time:
-
Permalink:
yipjunkai/pyvolr@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/yipjunkai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyvolr-0.1.6-cp310-abi3-win_amd64.whl.
File metadata
- Download URL: pyvolr-0.1.6-cp310-abi3-win_amd64.whl
- Upload date:
- Size: 237.2 kB
- Tags: CPython 3.10+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe2dada5d9382f974fa72dee315c5e79a9045b501cc5013b171f9bfe6ca65469
|
|
| MD5 |
ed5dd689120cbfd795460a8aaaa32f01
|
|
| BLAKE2b-256 |
1075d73767b81e6cc98a04fdf21bc61331e6c71b8a263fd855a0e1f9a24be54d
|
Provenance
The following attestation bundles were made for pyvolr-0.1.6-cp310-abi3-win_amd64.whl:
Publisher:
release.yml on yipjunkai/pyvolr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyvolr-0.1.6-cp310-abi3-win_amd64.whl -
Subject digest:
fe2dada5d9382f974fa72dee315c5e79a9045b501cc5013b171f9bfe6ca65469 - Sigstore transparency entry: 2059336647
- Sigstore integration time:
-
Permalink:
yipjunkai/pyvolr@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/yipjunkai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyvolr-0.1.6-cp310-abi3-win32.whl.
File metadata
- Download URL: pyvolr-0.1.6-cp310-abi3-win32.whl
- Upload date:
- Size: 233.2 kB
- Tags: CPython 3.10+, Windows x86
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd6b336808d21d571717cc816674edbb3eaa24431c370cf0d99b7cab66b0cbfd
|
|
| MD5 |
2995af268e925f925d3ce73180ee7056
|
|
| BLAKE2b-256 |
3d44a16552f4063b1832f52675b85423ddd3222d084be19d2eee172f28296281
|
Provenance
The following attestation bundles were made for pyvolr-0.1.6-cp310-abi3-win32.whl:
Publisher:
release.yml on yipjunkai/pyvolr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyvolr-0.1.6-cp310-abi3-win32.whl -
Subject digest:
cd6b336808d21d571717cc816674edbb3eaa24431c370cf0d99b7cab66b0cbfd - Sigstore transparency entry: 2059339777
- Sigstore integration time:
-
Permalink:
yipjunkai/pyvolr@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/yipjunkai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyvolr-0.1.6-cp310-abi3-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pyvolr-0.1.6-cp310-abi3-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 423.6 kB
- Tags: CPython 3.10+, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d7c55cbda00ce196462bb55c2ef33bae91b5e44795300fd68d7abbb623312e28
|
|
| MD5 |
bc5a72bb21d31ad68877bb4e8a0a20c8
|
|
| BLAKE2b-256 |
d84b840dbf0aa498c76f509949328638a876167835adbaa1bb46c869a855b809
|
Provenance
The following attestation bundles were made for pyvolr-0.1.6-cp310-abi3-musllinux_1_2_x86_64.whl:
Publisher:
release.yml on yipjunkai/pyvolr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyvolr-0.1.6-cp310-abi3-musllinux_1_2_x86_64.whl -
Subject digest:
d7c55cbda00ce196462bb55c2ef33bae91b5e44795300fd68d7abbb623312e28 - Sigstore transparency entry: 2059337939
- Sigstore integration time:
-
Permalink:
yipjunkai/pyvolr@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/yipjunkai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyvolr-0.1.6-cp310-abi3-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pyvolr-0.1.6-cp310-abi3-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 386.4 kB
- Tags: CPython 3.10+, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03755fa51913d35309a45e6e076d4eb1581074b5a5cf434f4d6c809c5d09da37
|
|
| MD5 |
c4cfb7fabe3c8be17d76e38862a4c1a5
|
|
| BLAKE2b-256 |
827c3d4aa62e624a6f7ff17899fbf8b9cbfae7af61ca5e3863fa11ce08af08e9
|
Provenance
The following attestation bundles were made for pyvolr-0.1.6-cp310-abi3-musllinux_1_2_aarch64.whl:
Publisher:
release.yml on yipjunkai/pyvolr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyvolr-0.1.6-cp310-abi3-musllinux_1_2_aarch64.whl -
Subject digest:
03755fa51913d35309a45e6e076d4eb1581074b5a5cf434f4d6c809c5d09da37 - Sigstore transparency entry: 2059336521
- Sigstore integration time:
-
Permalink:
yipjunkai/pyvolr@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/yipjunkai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyvolr-0.1.6-cp310-abi3-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pyvolr-0.1.6-cp310-abi3-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 342.3 kB
- Tags: CPython 3.10+, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
997f34046351f7111c4075a8fe3abd1772a08ec3ece25e6e5115d1c645b2b9d3
|
|
| MD5 |
fc2319f06f01c66afb62d9b485c8598d
|
|
| BLAKE2b-256 |
4f5cbfb3acccf0f1b8c52d225a093e1b0ae23656a2d0ec77039e3da9bde10a4c
|
Provenance
The following attestation bundles were made for pyvolr-0.1.6-cp310-abi3-manylinux_2_28_x86_64.whl:
Publisher:
release.yml on yipjunkai/pyvolr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyvolr-0.1.6-cp310-abi3-manylinux_2_28_x86_64.whl -
Subject digest:
997f34046351f7111c4075a8fe3abd1772a08ec3ece25e6e5115d1c645b2b9d3 - Sigstore transparency entry: 2059338121
- Sigstore integration time:
-
Permalink:
yipjunkai/pyvolr@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/yipjunkai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyvolr-0.1.6-cp310-abi3-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: pyvolr-0.1.6-cp310-abi3-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 321.0 kB
- Tags: CPython 3.10+, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b2e1a7a20d32fca019c0149579a28be168f84000e6ec4ee259b7199cc293e7d
|
|
| MD5 |
5f9e1ee276691b123bde366ef76669fe
|
|
| BLAKE2b-256 |
953133d5826da9cf102555c50c592d98a238585d7eba3f8c25dbeec1f447d89d
|
Provenance
The following attestation bundles were made for pyvolr-0.1.6-cp310-abi3-manylinux_2_28_aarch64.whl:
Publisher:
release.yml on yipjunkai/pyvolr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyvolr-0.1.6-cp310-abi3-manylinux_2_28_aarch64.whl -
Subject digest:
9b2e1a7a20d32fca019c0149579a28be168f84000e6ec4ee259b7199cc293e7d - Sigstore transparency entry: 2059335536
- Sigstore integration time:
-
Permalink:
yipjunkai/pyvolr@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/yipjunkai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyvolr-0.1.6-cp310-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: pyvolr-0.1.6-cp310-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 294.2 kB
- Tags: CPython 3.10+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41f5ec383345fd31303494e3e62f75a78ae1bf014478381de1b6fed43c9137d2
|
|
| MD5 |
ba577e283f01e7bf9bb55e35ee1eb3d3
|
|
| BLAKE2b-256 |
bb1b78d3642c2e6cc95652f0d1be12d5dfd1809bf5d5dffae7986bc1819fe2ca
|
Provenance
The following attestation bundles were made for pyvolr-0.1.6-cp310-abi3-macosx_11_0_arm64.whl:
Publisher:
release.yml on yipjunkai/pyvolr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyvolr-0.1.6-cp310-abi3-macosx_11_0_arm64.whl -
Subject digest:
41f5ec383345fd31303494e3e62f75a78ae1bf014478381de1b6fed43c9137d2 - Sigstore transparency entry: 2059338710
- Sigstore integration time:
-
Permalink:
yipjunkai/pyvolr@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/yipjunkai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyvolr-0.1.6-cp310-abi3-macosx_10_13_x86_64.whl.
File metadata
- Download URL: pyvolr-0.1.6-cp310-abi3-macosx_10_13_x86_64.whl
- Upload date:
- Size: 316.3 kB
- Tags: CPython 3.10+, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45bf3e533558b7e3eb18e38b5396e9e91b2d340ec5d78168594e8cb5c9a22a4c
|
|
| MD5 |
a6b6e08b056658dee2d90af7d267445d
|
|
| BLAKE2b-256 |
0aa7937bee6a5a9a0f3bc36ad561f3bec7de04e3f71e0e529359b74371846f45
|
Provenance
The following attestation bundles were made for pyvolr-0.1.6-cp310-abi3-macosx_10_13_x86_64.whl:
Publisher:
release.yml on yipjunkai/pyvolr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyvolr-0.1.6-cp310-abi3-macosx_10_13_x86_64.whl -
Subject digest:
45bf3e533558b7e3eb18e38b5396e9e91b2d340ec5d78168594e8cb5c9a22a4c - Sigstore transparency entry: 2059337040
- Sigstore integration time:
-
Permalink:
yipjunkai/pyvolr@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/yipjunkai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86fe634e9047f45c5413dde8f0403aa6a12d7cd0 -
Trigger Event:
push
-
Statement type: