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. 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

Throughput: pyvolr vs the active BSM-pricing ecosystem, log-log by array size Implied-vol recovery accuracy (correct digits, higher is better) vs option-price depth: pyvolr stays f64-exact down to prices of 1e-215 while the fast 2026 entrants and QuantLib fall to zero correct digits between 1e-6 and 1e-26

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. Since 0.1.7 its parallel price path leads bulk throughput too — 1M strikes in ~4 ms, ahead of fast-vollib's multithreaded numba kernel and ~5× ahead of opengreeks — closing the one row it used to concede (at 10k it lands a near-tie 2nd, just behind fast-vollib's numba and ahead of opengreeks). 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). And it stays correct in the tail the whole time: 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 189 µs 174 µs 223 µs 14.7 ms
bs.price, 1M strikes 4.2 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 per core than the textbook S·Φ(d1) − K·Φ(d2) form (that is opengreeks' per-core price edge, which pyvolr's rayon parallelism overtakes at scale — see the 1M row). A deliberate trade for tail accuracy; 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 parallelises via rayon above per-endpoint thresholds — implied_vol ≥1k, bundled greeks ≥4k, price ≥8k, single Greeks ≥16k (each gate set above its measured serial-vs-rayon break-even); 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: price vector rows on pyvolr 0.1.7 (the parallel path), scalar rows on 0.1.6 (the scalar fast path), IV and Greeks rows and the accuracy chart unchanged from 0.1.5 (those code paths are untouched); the throughput chart is regenerated for the 0.1.7 parallel price. 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 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 batches — every array endpoint releases the GIL and dispatches per-row work to rayon's global thread pool above its own measured threshold: implied_vol ≥1k rows, bundled greeks ≥4k, price ≥8k, single Greeks ≥16k (each gate sits above that endpoint's serial-vs-rayon break-even, so small calls never pay rayon's overhead); 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, every array endpoint releases the GIL above its threshold (implied_vol ≥1k, bundled greeks ≥4k, price ≥8k, single Greeks ≥16k) so rayon can work while other Python threads run; below the gate, and for scalar calls, the work is too small to bother and the GIL is held
  • 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

pyvolr-0.1.7.tar.gz (93.0 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.7-cp314-cp314t-win_amd64.whl (239.5 kB view details)

Uploaded CPython 3.14tWindows x86-64

pyvolr-0.1.7-cp314-cp314t-win32.whl (231.4 kB view details)

Uploaded CPython 3.14tWindows x86

pyvolr-0.1.7-cp314-cp314t-musllinux_1_2_x86_64.whl (426.5 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

pyvolr-0.1.7-cp314-cp314t-musllinux_1_2_aarch64.whl (387.3 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

pyvolr-0.1.7-cp314-cp314t-manylinux_2_28_x86_64.whl (345.0 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

pyvolr-0.1.7-cp314-cp314t-manylinux_2_28_aarch64.whl (321.6 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

pyvolr-0.1.7-cp314-cp314t-macosx_11_0_arm64.whl (291.6 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

pyvolr-0.1.7-cp314-cp314t-macosx_10_15_x86_64.whl (316.4 kB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

pyvolr-0.1.7-cp310-abi3-win_amd64.whl (242.2 kB view details)

Uploaded CPython 3.10+Windows x86-64

pyvolr-0.1.7-cp310-abi3-win32.whl (234.5 kB view details)

Uploaded CPython 3.10+Windows x86

pyvolr-0.1.7-cp310-abi3-musllinux_1_2_x86_64.whl (428.0 kB view details)

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

pyvolr-0.1.7-cp310-abi3-musllinux_1_2_aarch64.whl (389.5 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

pyvolr-0.1.7-cp310-abi3-manylinux_2_28_x86_64.whl (346.4 kB view details)

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

pyvolr-0.1.7-cp310-abi3-manylinux_2_28_aarch64.whl (323.4 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

pyvolr-0.1.7-cp310-abi3-macosx_11_0_arm64.whl (295.7 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

pyvolr-0.1.7-cp310-abi3-macosx_10_13_x86_64.whl (318.1 kB view details)

Uploaded CPython 3.10+macOS 10.13+ x86-64

File details

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

File metadata

  • Download URL: pyvolr-0.1.7.tar.gz
  • Upload date:
  • Size: 93.0 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.7.tar.gz
Algorithm Hash digest
SHA256 98f1e92db19c460700fa613a285fec53d7d5cd703682077b50bed173e6b8fb81
MD5 0e371741fcbb347180e093c4126b66d9
BLAKE2b-256 156e10367e3507d80b5335e6cace4744373946267dd99cb2b5d713bd8eb3bc8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.7.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.7-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: pyvolr-0.1.7-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 239.5 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.7-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 b4b2f8b116e728dc155145ed74bff55b044df001807b651fb1e43ff569cc5278
MD5 a892e062c6f8c61bbefddb4cff3f08e3
BLAKE2b-256 487d28f6e8fcf1903915ae606b7dee92ad5c0b81b84928ecaa7c430f8b3ea5f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.7-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.7-cp314-cp314t-win32.whl.

File metadata

  • Download URL: pyvolr-0.1.7-cp314-cp314t-win32.whl
  • Upload date:
  • Size: 231.4 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.7-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 85afc5bd647d4450555054494948548711b4834d992570940691a5cf77f0ea59
MD5 8aa119b2ad4fd90ff48a8a7552a14eae
BLAKE2b-256 7277042cfc99d347671aae881b9b4d5dea7ef109cd25cda23c779e348cc5a0cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.7-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.7-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.7-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 509b9ed194e113997bd12ced5a5f14dec0f2481b90cc27b61fbb2600ac03b030
MD5 52bbe02cbb36a4ee6533588905c0c6ea
BLAKE2b-256 21bd206ff7a8a8bf74cb9c83279f2d52293008369a2588ca6d79bbf977068ab5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.7-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.7-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.7-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1c4f0df882a54fb2bc55883123af2e57879e73651d2061dd2be00b4a86c7b8c6
MD5 26a551d2b0c0af1571a6e904f8005440
BLAKE2b-256 40a6a8b54f82c3ddbb5b8385f13bce7e2cb592354ca6020029fbba3ad2b82df6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.7-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.7-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.7-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b597153ab2e617128427b03a14e73538f688ed0bd4b1ecdd9abdab6e7c9e00ca
MD5 1fbb30f424cf75e65c8b25875358dda6
BLAKE2b-256 e20cb91c968e3dbd54fc85d15be2ce7442dc39c144f7bed475cffcac919e8961

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.7-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.7-cp314-cp314t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.7-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0de98545a6fa2ea9c36fb93801fb6be2ae2cef536a478d726b7439739a350c7a
MD5 a5ccfe112ff64c799b4d51041cb29695
BLAKE2b-256 8d0218597bd0fa8e4d543c80a7186c8a77ea48403ff0706fc691366242c9b514

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.7-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.7-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.7-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c3a1069ce8558b141187eb9757d2d0ea98dc5e569b337cdfbd60089319a3a610
MD5 a684ca326735b1e00435513d12ac1e41
BLAKE2b-256 73dfccdaf366e2052604f5e11b5ed225d4b76669fc072488b71b8f8703afed78

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.7-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.7-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.7-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 8eeb9d38054f7393474dad095b60202b21df7b91a60961a50bf3e4ce46b65ab5
MD5 79a9692580c228b4e13f289196c394ac
BLAKE2b-256 7b976d12cf941b9d83c289669ae6ad7f4818198dbf73acb2f75800c070c7653c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.7-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.7-cp310-abi3-win_amd64.whl.

File metadata

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

Hashes for pyvolr-0.1.7-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 bb071679710f527956733062ff567606335ad360152a4f7794a9fd561b32059e
MD5 975540c9f2e7fd67dbf4e923bd002232
BLAKE2b-256 11a1eac321e1c4936125992460130712d2e3c8509d36c8d71bcf804a77c1c31e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.7-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.7-cp310-abi3-win32.whl.

File metadata

  • Download URL: pyvolr-0.1.7-cp310-abi3-win32.whl
  • Upload date:
  • Size: 234.5 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.7-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 8fee15329313ebe4046a0c9b6b9db39f15b5c010083ea7cf8649554108e18fe3
MD5 f40d802dd7b432616462923c03c0b3c1
BLAKE2b-256 36dc6afb935d85346bcf1a3db52086a3b5be9ad4479992b90ad11324d34fb769

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.7-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.7-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.7-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9821ec7082bccafa9a5955d42538a5c8d9336380c9e9859334889b739bf4d348
MD5 2d2e333a693bce473b559159ffd0c879
BLAKE2b-256 483282661953abfc61c8687ddad190eb704e5f8fe95e4d1876f6073cc8158651

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.7-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.7-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.7-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 145bb90c3826442fd5ef86984d6e4e85d0425f34933e63c9aafb7b04e9bad9db
MD5 c2d4499aa6391f06d7788a973d5a1d8d
BLAKE2b-256 c69f3345845154454fdd9bc7e3432503acb606a588d07879c33dbed3b4667a3d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.7-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.7-cp310-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.7-cp310-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f3c27348e96a861c99490d15822eb87aa0ba7214181093c1f84bc23195b08e5e
MD5 8bef9aa2e1c81b0ae51cd419cfba8f3f
BLAKE2b-256 23bc6b99ba566bff6ef9a3a29bedb7726af86a4d3191964eded7cb2b62630998

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.7-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.7-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.7-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a5ebdd27b11e01304b8021c2c5119cfc5445d768599c7190745d117b7781ceab
MD5 d8b1489ecb98a5930e124d7570f1c496
BLAKE2b-256 e26d8ceda897fd6fe9f100701b31023806d7102246735c0334b30767193fb1d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.7-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.7-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.7-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 249631344d4ea5d9880a5e2943acee482be33dd2341dc0b423f320739f2de9da
MD5 1c992dac1f954bff7cc4bb23f8af494b
BLAKE2b-256 ea4d7139eb5047cca46434cbac2e65a99978cc8b59ed47cee7c3c5bf815d24c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.7-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.7-cp310-abi3-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for pyvolr-0.1.7-cp310-abi3-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 bdf0f82393c0c97a9114c58c8937681f2e1152a893a91277be915ce1cf4da2fb
MD5 06be132562f28fb5bed6d640ef48bed7
BLAKE2b-256 a46163840e3ef94d576543e03390d2bfc72a14b7ad90b33f0fbc2eda0a8d3ce8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvolr-0.1.7-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