Skip to main content

Modern Black-Scholes-Merton pricing, Greeks, and implied volatility for Python. Rust core. Drop-in py_vollib replacement.

Project description

pyvolr

PyPI Python versions Wheel OpenSSF Scorecard CI License

Modern Black-Scholes-Merton pricing, Greeks, and implied volatility for Python. Rust core. Vectorized. Drop-in replacement for the abandoned py_vollib.

from pyvolr import bs

bs.price("c", S=100, K=105, T=0.5, r=0.05, sigma=0.2) # 4.581680167540007

⚡ Performance

Time per call: pyvolr vs the active BSM-pricing ecosystem, log-log by array size Throughput: pyvolr vs the active BSM-pricing ecosystem, log-log by array size

Six libraries on the chart: pyvolr, vollib (resurrected upstream of py_vollib, pure Python), py_vollib_vectorized (numba), blackscholes (pure Python, object-per-call), QuantLib (C++ core, looped scalar), and quantforge (Rust + SIMD).

pyvolr leads the non-SIMD field at every batch size — ~2.4× faster than py_vollib_vectorized (numba), ~4× faster than QuantLib's looped scalar, 10×+ faster than the pure-Python libraries. quantforge (Rust + SIMD) is faster from ~1k strikes up, on the explicit-vectorisation axis fast-vollib takes with Triton kernels — a trade pyvolr deliberately skips. pyvolr is the "Rust-cored CPU option": no unsafe SIMD intrinsics, no GPU dependency, an abi3 wheel in one file, and ~1-ULP accuracy into the deep-OTM tail where quantforge and blackscholes underflow to zero (see Numerical agreement below). For raw batch throughput prefer quantforge; for a correct, dependency-light CPU pricer, pyvolr.

Scenario pyvolr py_vollib speedup
bs.price, scalar 4.2 µs 2.2 µs 0.5×
bs.price, 1k strikes 43.3 µs 2.32 ms 54×
bs.price, 10k strikes 350 µs 23.32 ms 67×
bs.price, 100k strikes 3.48 ms 234.91 ms 68×
bs.price, 1M strikes 34.10 ms 2,350 ms 69×
bs.greeks (all 5), 10k 273 µs 89.95 ms 330×
bs.implied_vol, scalar 4.4 µs 15.0 µs 3.4×
bs.implied_vol, 10k strikes 465 µs 128 ms ¹ 275×
black76.price, scalar 3.7 µs 2.2 µs 0.6×
black76.price, 10k strikes 346 µs 23.19 ms 67×
black76.implied_vol, scalar 3.9 µs 14.7 µs 3.8×

¹ py_vollib's implied_volatility is scalar-only; the 10k figure is N × scalar measured via compare_py_vollib.py. pyvolr's vectorised path parallelises automatically above N=1024 via rayon — set RAYON_NUM_THREADS=1 to force serial.

Pricing throughput note: the bs.price / black76.price rows use the normalised-Black engine — ~1-ULP accurate into the deep-OTM tail, ~2.3× slower on vectorised pricing than the prior textbook S·Φ(d1) − K·Φ(d2) form. A deliberate accuracy-for-speed trade; Greeks and IV are unaffected.

The table above is the headline-vs-the-abandoned-upstream comparison (py_vollib's last release is broken on Python 3.12+, see docs/why.md). For the workload most people actually run — a smile, an option chain, an IV snapshot — pyvolr is tens of times faster than the abandoned py_vollib upstream and installs cleanly on every modern Python.

bs.greeks returning all five Greeks at once uses a single-pass Rust kernel that shares d1/d2, discount factors, cdf, and pdf across the five outputs — ~3× faster than the equivalent five separate calls. For batches ≥4096 rows, the work also dispatches across CPU cores in parallel.

Numerical agreement: pyvolr matches every library above to f64 precision (~1e-13 relative) on every well-posed input across price + 5 Greeks + IV. At deep-OTM short-expiry corners pyvolr is more precise than the rest — blackscholes and quantforge underflow to zero where pyvolr's erfcx-based cdf retains the ~1e-50 price; QuantLib and the alternatives lose 1-2 digits. Run python bench/sanity_check_competitors.py in each venv to re-validate.

Reproduce the table with python bench/compare_py_vollib.py; reproduce the chart with python bench/compare_competitors.py bench then python bench/compare_competitors.py chart (across the Python 3.11 + 3.12 venvs documented in the script's docstring). Library versions: Apple M4 Pro / Python 3.10.20 / numpy 2.2.6 / pyvolr 0.1.4 / py_vollib 1.0.1 (table) / vollib 1.0.7 / py_vollib_vectorized 0.1.1 / blackscholes 0.2.0 / QuantLib 1.42.1 / quantforge 0.1.1 (chart).

📦 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 as bs
  • 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 batchesimplied_vol (above N≈1,000 rows) and the bundled greeks kernel (above N≈4,000) release the GIL and dispatch per-row work to rayon's global thread pool; set RAYON_NUM_THREADS=1 to opt out
  • Full numpy broadcasting — any combination of inputs in any shape, scalar-in scalar-out
  • py_vollib drop-in shimspyvolr.compat.py_vollib mirrors the upstream module tree (including py_vollib.black) for one-import-line migration; pyvolr.compat.py_vollib_vectorized mirrors 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 bundled greeks (≥4k rows) kernels release the GIL while rayon works; price and 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)
  • Higher-order Greeks (vanna, vomma, charm, speed, zomma, color)
  • SIMD batch evaluation
  • American options (CRR binomial → finite difference)
  • Volatility surface fitting (SVI, SSVI)

🔄 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 has been broken on Python 3.12+ since the release — a transitive dependency imports DBL_MIN / DBL_MAX from CPython's internal _testcapi test module, which isn't shipped with modern Python distributions. The fix is two lines (sys.float_info.{min,max} are the correct sources), but py_lets_be_rational hasn't released since 2017, py_vollib since 2020, and the maintainers are gone.

Full backstory: docs/why.md.

📁 Project structure

pyvolr/
├── crates/core/             # Rust numerical core
│   ├── src/
│   │   ├── lib.rs           # PyO3 bindings (flat-array entry points)
│   │   ├── bsm.rs           # BSM pricing, d1/d2, forward price
│   │   ├── black76.rs       # Black-76 (futures options) — delegates to BSM with q=r
│   │   ├── greeks.rs        # Delta, gamma, theta, vega, rho
│   │   ├── iv.rs            # Jäckel "Let's Be Rational" IV solver (Householder-4, ≤2 iters)
│   │   └── normal.rs        # Φ / φ, erfcx (Lentz CF), inverse CDF (Wichura AS241)
│   └── benches/             # criterion: perf-gate contracts (pricing) + experiment harness (experiments)
├── bench/                   # Python-level speed/precision scripts (dev-only, not in CI)
│   ├── compare_py_vollib.py            # reproduces the perf table
│   ├── compare_competitors.py          # reproduces the perf chart (6 libraries)
│   └── sanity_check_competitors.py     # cross-validates numerical agreement
├── python/pyvolr/
│   ├── bs.py                # BSM public API (numpy-broadcast wrappers)
│   ├── black76.py           # Black-76 public API
│   ├── _wrappers.py         # Shared FFI helpers (broadcast, flag normalize)
│   ├── _core.pyi            # Type stubs for the Rust extension
│   └── compat/py_vollib/    # Drop-in shim mirroring py_vollib's tree
├── tests/                   # pytest + hypothesis property tests
├── .github/workflows/       # ci, release, release-please, differential, fuzz, perf, security, scorecard, stale
├── .github/scripts/         # CI helper scripts (perf-gate comparator)
├── Cargo.toml               # Rust workspace
└── pyproject.toml           # maturin build backend + project config

📚 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)

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 died because nobody was paid to maintain it. 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, SIMD/vectorization work, 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

pyvolr-0.1.5.tar.gz (82.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyvolr-0.1.5-cp314-cp314t-win_amd64.whl (222.6 kB view details)

Uploaded CPython 3.14tWindows x86-64

pyvolr-0.1.5-cp314-cp314t-win32.whl (218.1 kB view details)

Uploaded CPython 3.14tWindows x86

pyvolr-0.1.5-cp314-cp314t-musllinux_1_2_x86_64.whl (408.6 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

pyvolr-0.1.5-cp314-cp314t-musllinux_1_2_aarch64.whl (371.9 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

pyvolr-0.1.5-cp314-cp314t-manylinux_2_28_x86_64.whl (327.7 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

pyvolr-0.1.5-cp314-cp314t-manylinux_2_28_aarch64.whl (306.6 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

pyvolr-0.1.5-cp314-cp314t-macosx_11_0_arm64.whl (279.5 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

pyvolr-0.1.5-cp314-cp314t-macosx_10_15_x86_64.whl (302.4 kB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

pyvolr-0.1.5-cp310-abi3-win_amd64.whl (227.1 kB view details)

Uploaded CPython 3.10+Windows x86-64

pyvolr-0.1.5-cp310-abi3-win32.whl (223.3 kB view details)

Uploaded CPython 3.10+Windows x86

pyvolr-0.1.5-cp310-abi3-musllinux_1_2_x86_64.whl (412.6 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ x86-64

pyvolr-0.1.5-cp310-abi3-musllinux_1_2_aarch64.whl (376.5 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

pyvolr-0.1.5-cp310-abi3-manylinux_2_28_x86_64.whl (331.2 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ x86-64

pyvolr-0.1.5-cp310-abi3-manylinux_2_28_aarch64.whl (311.1 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

pyvolr-0.1.5-cp310-abi3-macosx_11_0_arm64.whl (285.5 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

pyvolr-0.1.5-cp310-abi3-macosx_10_13_x86_64.whl (306.4 kB view details)

Uploaded CPython 3.10+macOS 10.13+ x86-64

File details

Details for the file pyvolr-0.1.5.tar.gz.

File metadata

  • Download URL: pyvolr-0.1.5.tar.gz
  • Upload date:
  • Size: 82.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pyvolr-0.1.5.tar.gz
Algorithm Hash digest
SHA256 081a8c09d9853f0cb0e9617757570a715e1acfdb4efe063bd34f3d72575b5d3a
MD5 782542c8186253397228184bbd4f6bee
BLAKE2b-256 593c0757cb96d932ac565ad2ec05b2c0771ea5ee30f48d0148189f15c7d97212

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.5.tar.gz:

Publisher: release.yml on yipjunkai/pyvolr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyvolr-0.1.5-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: pyvolr-0.1.5-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 222.6 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

Hashes for pyvolr-0.1.5-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 05c3cb9bfa8bb6ab61d67206be9331427f8153291de6acccfc2fa7433f9b0077
MD5 61e467be73d524a9a617f5c1540905b5
BLAKE2b-256 63b04ada07900b46e75bf5c5118527b5abfb52c9591ec1c93a61d56a8b48085b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.5-cp314-cp314t-win_amd64.whl:

Publisher: release.yml on yipjunkai/pyvolr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyvolr-0.1.5-cp314-cp314t-win32.whl.

File metadata

  • Download URL: pyvolr-0.1.5-cp314-cp314t-win32.whl
  • Upload date:
  • Size: 218.1 kB
  • Tags: CPython 3.14t, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pyvolr-0.1.5-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 fac2808aaca1cfe03ec782d9805a4f7c1cca2c366655b1dc1844d0d5ead521d3
MD5 e6aa73ad21776e9c33b3f61276e58948
BLAKE2b-256 dac5ab04809e5d3ba365bb9b6c739cd60c0ebf78dc5a35f998fd93135c55260e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.5-cp314-cp314t-win32.whl:

Publisher: release.yml on yipjunkai/pyvolr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyvolr-0.1.5-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.5-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0c473fd74374424f8ceeaa5ce80cef9d1b6abfec89c9081387378b8421666b4b
MD5 8c0a21649fb64720e79e830c7da2cd17
BLAKE2b-256 a5cfd2d9e2809737ac12f00a7e48f35bc2af29500e561a840388ea332040a78c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.5-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: release.yml on yipjunkai/pyvolr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyvolr-0.1.5-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.5-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 17f1bfc5aee563be2865b5e835ce64f8af65ea7db0d070a7a587209cfbf7801f
MD5 2ae4586f164c57df29a14e24074bb424
BLAKE2b-256 4af8676169af0c5102a8cfea7362f049d75f57bfa43a5b919c0a3e587d81871e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.5-cp314-cp314t-musllinux_1_2_aarch64.whl:

Publisher: release.yml on yipjunkai/pyvolr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyvolr-0.1.5-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.5-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 35158ed3aa8cd7d917205ba995b74f3e06d5795bba87373ef3a0f2c921fc73a4
MD5 dd74bb0edd684e02e9c7cf9c3ddd9f7c
BLAKE2b-256 793fb9b558322f24bd73358a29a5420fcd3d3c3ade0eed5c611256fcd4f84b4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.5-cp314-cp314t-manylinux_2_28_x86_64.whl:

Publisher: release.yml on yipjunkai/pyvolr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyvolr-0.1.5-cp314-cp314t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.5-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4f942349dc9de45acc3b3d904493bc4335da504d6c02b4ee7e2ae86f181158ff
MD5 b02d3bfd76fe6257b9ffdcb91e862d9b
BLAKE2b-256 6744a82850033518d8ce5ee280b1d448e8988ff5f2603e33dd40badd527c6d9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.5-cp314-cp314t-manylinux_2_28_aarch64.whl:

Publisher: release.yml on yipjunkai/pyvolr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyvolr-0.1.5-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.5-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5cf1e34944bd7016a4ab94328f7de6dfdfddd2f9259dfe54c83a1e5d4d658191
MD5 b6f2db2083138f421e6c846693add538
BLAKE2b-256 acb944922a135547e06856d85ac4d4837a20988c5368d95087181eaddae55246

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.5-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: release.yml on yipjunkai/pyvolr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyvolr-0.1.5-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.5-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 432b40d4010daeb49c40e03119cc40e694e4a4a6c728d56705cde506f58656c7
MD5 156a3768c37152ced795a056f6d0337d
BLAKE2b-256 ff5561a5fa7b980e1a895eb3e5221df301433f6a48188167f57c900cb3d1d9e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.5-cp314-cp314t-macosx_10_15_x86_64.whl:

Publisher: release.yml on yipjunkai/pyvolr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyvolr-0.1.5-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: pyvolr-0.1.5-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 227.1 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

Hashes for pyvolr-0.1.5-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 13f9234dd1736781736d3612e7bdf8104e947b71773c02dd735b4ff7150c84dd
MD5 6b98763d63584e13c67072cb9a4ad09c
BLAKE2b-256 90e694ce43c57cf66aced425d52174553761dc28d3a4d90f68ef8de749bb32e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.5-cp310-abi3-win_amd64.whl:

Publisher: release.yml on yipjunkai/pyvolr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyvolr-0.1.5-cp310-abi3-win32.whl.

File metadata

  • Download URL: pyvolr-0.1.5-cp310-abi3-win32.whl
  • Upload date:
  • Size: 223.3 kB
  • Tags: CPython 3.10+, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pyvolr-0.1.5-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 bb30783881bed256c64a76384da9bf1f6c4d1a909f61ff888714685ee361d928
MD5 2816e44f02a77d8b76412334d96a6d02
BLAKE2b-256 9c5f1c6e9f75ecbbbe37b33f6ed650a3b2c616cfd17ad0bcf7fa65139ace480d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.5-cp310-abi3-win32.whl:

Publisher: release.yml on yipjunkai/pyvolr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyvolr-0.1.5-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.5-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9418421889108a828db732699d340824e5804955bdfb40343d6a27f6c2566d15
MD5 ad638aa0ba60230980136dbb38a5dbd6
BLAKE2b-256 ff5637f7ea07c46a6b79975e58e919f5991c54e04b4b026572635c3db6983f83

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.5-cp310-abi3-musllinux_1_2_x86_64.whl:

Publisher: release.yml on yipjunkai/pyvolr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyvolr-0.1.5-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.5-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bd08f59d60964eac110a7b6feaa07f64cfcc649c2074f172ed300d0ab240f92a
MD5 f3319b24a8a0ef5f503c2fdedce14ff4
BLAKE2b-256 12d0259381bd5956b809def5d8ffd8affc29ace251eef131d753cc7c93a420a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.5-cp310-abi3-musllinux_1_2_aarch64.whl:

Publisher: release.yml on yipjunkai/pyvolr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyvolr-0.1.5-cp310-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.5-cp310-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f8fd9021af7e9bd7326542bd5ee54c18c77eb65dee9c3338550d5d397d2b2574
MD5 5db32d6f0d61fa89e679cff7ca7cb76f
BLAKE2b-256 5f03f8124ba85ce4425c4e6d5ecc9bda19b298289a7c40b60fae125614c61299

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.5-cp310-abi3-manylinux_2_28_x86_64.whl:

Publisher: release.yml on yipjunkai/pyvolr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyvolr-0.1.5-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.5-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7feff7e12a1451b03143f5aeeb027c6fe32f0d8453559e265c6903b91b517b03
MD5 83b55e6811a4d807d5c36ab741d4f043
BLAKE2b-256 af59e99b5d639aad4808b8d34de49297f003060d8aa416916191ef6cb9cc5e42

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.5-cp310-abi3-manylinux_2_28_aarch64.whl:

Publisher: release.yml on yipjunkai/pyvolr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyvolr-0.1.5-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.5-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d828641d677d8c607c609eb796488035bad7e80d3dc6b0acf0b8cb33e07780c2
MD5 638975bb32b07537cb386f1667af3a6f
BLAKE2b-256 1a3cc7c03e9a76f24b89ce4dcf0695ff9788dd37384bd7b8a5307a780f650c2d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.5-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on yipjunkai/pyvolr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyvolr-0.1.5-cp310-abi3-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.5-cp310-abi3-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 a43f73459c555f52c588ff3de75eedf1515045cf201c690fc8a36cb413a47ddf
MD5 c234eb527ed94dfd762723dd10bb584b
BLAKE2b-256 a2dfe6d0e9fc145350808110b2f48e7463c6635d84b005f4117cfbdf7940e7ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.5-cp310-abi3-macosx_10_13_x86_64.whl:

Publisher: release.yml on yipjunkai/pyvolr

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