Skip to main content

Batched robust Whittaker smoother (divided differences) implemented in Rust (PyO3).

Project description

whitsmooth_rust

PyPI Python License Wheels

A fast, compiled (no JIT warmup) implementation of a batched robust Whittaker smoother with divided differences in Rust, exposed to Python via PyO3.

It is designed for data shaped as many independent time series:

  • S series (samples / pixels / bands / locations)
  • T time points per series

and supports time- and series-varying weights (e.g. missing data, quality flags, IRLS robust weights).

This package provides both float64 and float32 implementations.


Installation

Install from PyPI (recommended)

python -m pip install --upgrade pip
python -m pip install whitsmooth_rust

Wheels are built in CI for:

  • Python: CPython 3.9+
  • Platforms: Linux (manylinux x86_64), macOS (x86_64 + arm64), Windows (x86_64)

Build locally (from source)

If you are on an unsupported platform (or want to build the latest code), install Rust and maturin:

python -m pip install maturin
git clone https://github.com/MarcYin/whitsmooth_rust_repo.git
cd whitsmooth_rust_repo
maturin develop --release

This builds and installs the extension into the current Python environment.


Mathematical background

We solve a Whittaker-type penalized least squares problem for each series s:

$$ \min_{z_s}; \sum_{t=1}^T w_{s,t}(y_{s,t}-z_{s,t})^2 + \lambda \lVert D z_s \rVert^2 $$

  • y_{s,t}: observation
  • w_{s,t} >= 0: weight (0 means missing/ignored)
  • D: divided-difference operator of order d defined on a strictly increasing sampling grid x
  • λ (lambda): smoothing strength

The normal equations are:

$$ (\mathrm{diag}(w_s) + \lambda D^\top D + \text{ridge} I) z_s = w_s \odot y_s $$

P = D^T D is symmetric positive semidefinite and banded with half-bandwidth k = 2d. We store only the lower band Pb[j, i] = P[i, i-j].

We solve each system using an SPD banded Cholesky factorization:

$$ A = L L^\top $$

which exploits symmetry and banded structure.


Robust IRLS (iteratively reweighted least squares)

Robust smoothing down-weights outliers by iterating:

  1. Solve Whittaker system with current weights
  2. Compute residuals r = y - z
  3. Estimate per-series scale (default: MAD)
  4. Compute standardized residuals u = r / scale
  5. Update robust weights w_rob(u) and repeat

Final weights per entry are:

$$ w_{total} = w_{base} \cdot w_{rob} $$

Supported robust weight functions:

  • Tukey / Bisquare (hard rejection outside c)
  • Huber (soft clipping)
  • Cauchy
  • Welsch
  • Fair
  • Hampel (3-parameter redescending)

Supported scale estimators:

  • mad (default): scale = 1.4826 * median(|r|)
  • huber: iterative Huber M-scale (more stable for heavy tails)

x normalization (recommended)

Because divided differences depend on the units/spacing of x, a fixed λ can mean different smoothness when sampling density changes. You can normalize x to approximately unit spacing:

  • normalize="mean": average step becomes ~1
  • normalize="median": median step becomes ~1 (robust)

This makes λ more comparable across datasets.


Handling near-duplicate x (recommended for float32)

If your x has very small gaps (near-duplicate sampling positions), the divided-difference penalty can become ill-conditioned (especially in float32). By default, the robust solvers use merge_x_tol=1e-2 (set merge_x_tol=None to disable). Options:

  • Use robust_whittaker_irls_f64 (most stable).
  • Tune merge_x_tol to merge adjacent points within a tolerance (in input-x units).
  • Increase eps and/or ridge for float32.

Long runs of missing values (especially missing tails) reduce the data constraints at the edges and can also make the float32 solve ill-conditioned. Mitigations: use robust_whittaker_irls_f64, increase ridge/eps, use weighting="huber", or reduce iterations.


API overview

All functions use series-first layout for speed:

  • y_st: shape (S, T)
  • w_base_st: shape (S, T) or omitted

Build penalty band

  • build_pb_f64(x, d=2, normalize=None, eps=None) -> (pb, k)
  • build_pb_f32(x, d=2, normalize=None, eps=None) -> (pb, k)

Returns:

  • pb: array of shape (k+1, T) storing lower band of P = D^T D
  • k = 2d

Robust IRLS smoother

  • robust_whittaker_irls_f64(...) -> z_st (or (z_st, w_total_st) if return_weights=True)
  • robust_whittaker_irls_f32(...) -> z_st (or (z_st, w_total_st))

Parameters (both dtypes):

  • x: strictly increasing sampling positions (length T)
  • y_st: (S,T) observations (NaNs allowed; they will be treated as missing)
  • w_base_st: (S,T) base weights (optional; if provided, NaNs in y are forced to 0 weight)
  • lam: smoothing parameter λ (default: 10)
  • d: difference order (default: 2)
  • iterations: IRLS iterations (default: 1; typical 3..10)
  • weighting: one of "tukey"|"huber"|"cauchy"|"welsch"|"fair"|"hampel" (default: "tukey")
  • scale: "mad" or "huber" (default: "mad")
  • ridge: small diagonal stabilizer (default: 1e-10; f32 may need larger values on difficult grids)
  • normalize: None / "mean" / "median" (default: "mean")
  • eps: numerical floor for stability (default: 1e-10; f32 may need larger values on difficult grids)
  • merge_x_tol: tolerance (in input-x units) to merge near-duplicate sampling points by base-weighted averaging before solving (default: 1e-2, set to None to disable)
  • parallel: parallelize across series (Rayon). Recommended when S is large. (default: True)
  • tuning: optional tuple
    • for Tukey/Huber/Cauchy/Welsch/Fair: (0,0,c)
    • for Hampel: (a,b,c)
  • return_weights: return final w_total_st as well (default: False)

Usage examples

Float64

import numpy as np
import whitsmooth_rust

rng = np.random.default_rng(0)
T, S = 2000, 1000
x = np.cumsum(rng.uniform(0.8, 1.2, size=T)).astype(np.float64)

y = rng.normal(size=(S, T)).astype(np.float64)
y[2, T//2] += 25.0
y[4, 10:25] = np.nan

w = rng.uniform(0.2, 1.0, size=(S, T)).astype(np.float64)
w[~np.isfinite(y)] = 0.0

z, wtot = whitsmooth_rust.robust_whittaker_irls_f64(
    x, y, w,
    lam=50.0, d=2, iterations=3,
    weighting="tukey",
    scale="mad",
    ridge=1e-10,
    normalize="mean",
    eps=1e-12,
    parallel=True,
    tuning=None,
    return_weights=True
)

Float32

x32 = x.astype(np.float32)
y32 = y.astype(np.float32)
w32 = w.astype(np.float32)

z32 = whitsmooth_rust.robust_whittaker_irls_f32(
    x32, y32, w32,
    lam=50.0, d=2, iterations=6,
    weighting="tukey",
    scale="mad",
    ridge=1e-6,
    normalize="mean",
    eps=1e-6,
    parallel=True,
    tuning=None,
    return_weights=False
)

If your data is (T,S)

Transpose when calling:

z_st = whitsmooth_rust.robust_whittaker_irls_f64(x, y_ts.T, w_ts.T, ...)
z_ts = z_st.T

Notes on performance

  • The solver is SPD banded Cholesky, per series, with half-bandwidth k=2d.
  • Parallelization is across series S.
  • Float32 can be significantly faster and reduce memory footprint for very large S.
  • For highly irregular / near-duplicate x, prefer merge_x_tol or robust_whittaker_irls_f64 (float32 may fallback to float64 internally).

License

MIT


Single-pass (non-robust) Whittaker solver

If you don't need IRLS robustness, you can run a single solve (much cheaper):

  • whittaker_solve_f64(x, y_st, w_base_st=None, lam=10.0, d=2, ridge=1e-10, normalize="mean", eps=1e-10, parallel=True) -> z_st
  • whittaker_solve_f32(x, y_st, w_base_st=None, lam=10.0, d=2, ridge=1e-10, normalize="mean", eps=1e-10, parallel=True) -> z_st

These solve: [ (\mathrm{diag}(w_s) + \lambda D^\top D + \text{ridge} I) z_s = w_s \odot y_s ] with no robust reweighting.


Benchmark script

This repo includes benchmark.py which times:

  • single solve f64 / f32
  • robust IRLS (Tukey) f64 / f32

Across multiple S values and plots runtime.

After installing the extension:

python benchmark.py

Optional: if you have SciPy installed, the benchmark can also compare against a sparse reference (looping over series).

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

whitsmooth_rust-0.1.3.tar.gz (23.0 kB view details)

Uploaded Source

Built Distributions

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

whitsmooth_rust-0.1.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (362.5 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.1.3-cp314-cp314-win_amd64.whl (248.9 kB view details)

Uploaded CPython 3.14Windows x86-64

whitsmooth_rust-0.1.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (359.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.1.3-cp314-cp314-macosx_11_0_arm64.whl (316.3 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

whitsmooth_rust-0.1.3-cp314-cp314-macosx_10_12_x86_64.whl (328.7 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

whitsmooth_rust-0.1.3-cp313-cp313-win_amd64.whl (248.1 kB view details)

Uploaded CPython 3.13Windows x86-64

whitsmooth_rust-0.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (359.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.1.3-cp313-cp313-macosx_11_0_arm64.whl (317.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

whitsmooth_rust-0.1.3-cp313-cp313-macosx_10_12_x86_64.whl (328.5 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

whitsmooth_rust-0.1.3-cp312-cp312-win_amd64.whl (248.3 kB view details)

Uploaded CPython 3.12Windows x86-64

whitsmooth_rust-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (359.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.1.3-cp312-cp312-macosx_11_0_arm64.whl (317.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

whitsmooth_rust-0.1.3-cp312-cp312-macosx_10_12_x86_64.whl (328.6 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

whitsmooth_rust-0.1.3-cp311-cp311-win_amd64.whl (250.4 kB view details)

Uploaded CPython 3.11Windows x86-64

whitsmooth_rust-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (361.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.1.3-cp311-cp311-macosx_11_0_arm64.whl (320.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

whitsmooth_rust-0.1.3-cp311-cp311-macosx_10_12_x86_64.whl (331.3 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

whitsmooth_rust-0.1.3-cp310-cp310-win_amd64.whl (250.2 kB view details)

Uploaded CPython 3.10Windows x86-64

whitsmooth_rust-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (361.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.1.3-cp310-cp310-macosx_11_0_arm64.whl (320.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

whitsmooth_rust-0.1.3-cp310-cp310-macosx_10_12_x86_64.whl (331.3 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

whitsmooth_rust-0.1.3-cp39-cp39-win_amd64.whl (250.5 kB view details)

Uploaded CPython 3.9Windows x86-64

whitsmooth_rust-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (362.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.1.3-cp39-cp39-macosx_11_0_arm64.whl (321.1 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

whitsmooth_rust-0.1.3-cp39-cp39-macosx_10_12_x86_64.whl (332.2 kB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

File details

Details for the file whitsmooth_rust-0.1.3.tar.gz.

File metadata

  • Download URL: whitsmooth_rust-0.1.3.tar.gz
  • Upload date:
  • Size: 23.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for whitsmooth_rust-0.1.3.tar.gz
Algorithm Hash digest
SHA256 1f58ce95566a0d2ecd8b6408c7473d85a3eae96d7188a8e9afb4dc9af72c3530
MD5 859ffe941a667a123391bcfa8ff1a1c9
BLAKE2b-256 5d67e07b5065974f33dbd82e79490f9fab4c523b410da0bf2e61a7e546a45415

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0e8bdc479df0354db06735d9158855ddbfeb54b88b79a0e157e70c79c8297083
MD5 a39986a273c0b0743b30674d0859cfb3
BLAKE2b-256 8898369b2894dbe3c85d771b95b3c1d617607bc04d7444a677cee0a37f19d02e

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 7526d84303b1910071624bc590669018de03c4fb5467dd1f1ed7b9a6cae3b50f
MD5 f613a7e397d36b464d691171884a6e93
BLAKE2b-256 819d4b071a71ca19639127e7fbff878d2fdf2661554f1cf6725d59c49a2a6ab5

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 652c8f62df2de8d190e39f7987410fdf3d33173073afcbc916e74c25c37e56e9
MD5 96b1bae43afa43edd66235390c4b8a10
BLAKE2b-256 95fc5cd08ee9219712bdc1a2a645697b2449336635164081c31e1918aff345ab

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b4390eae4efb4cf900ad06f85e72c226936de17db3482d22366f03006e0d36b1
MD5 7415e2e6cf37e6c5188222c7bf23345e
BLAKE2b-256 cbe537ef6a07ffc2532bb5474c2e4b1bfdb9a4c1ba77c94f49e8036261aea6ba

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d4492a060b04687b3e4107fdc25bee6e6a6790aba7811f5fb3100293b5292c4d
MD5 438c16ed83d9ae9aa9e9bb64b261ca0c
BLAKE2b-256 e38032c1363e71535637187fbe061211966870b28832c5de606b5f0cb52eea1c

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8a8e6eca97ca617d7b6d7fcd3e0e5f0cd2d05a0c2428103d5fd769ddb7c09aa7
MD5 03ab9292ff8d005ca8024fa5c470cb7f
BLAKE2b-256 7c305b26e9d199ffc12e06c977628d4b93c73ec1a73c0aab7c27dbdd8719d620

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dc2e050eacda24deeab3936ad74605a643851532f6eab3ffc8680b43b5fe9fee
MD5 5ba7c70c215d10dbf13ce779809a217a
BLAKE2b-256 e5006eee141a52e042b027b77a7054f9992e91f059a0d5105946f80b0d203529

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 827d5882843ff2a9485055a57eefd345853c3cd7d04e6988ea2672a5e4794c1b
MD5 bc627ee279ec88edda315bdeccf30739
BLAKE2b-256 7a1263e210873b566ffd3d585893a83b5f9c8b1c51c0b65022863d38f60a8c77

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c920335ec5ef43fc4dd6956998739269ddc0d0573820783fae27ea620bc9d681
MD5 efe113004cdce7bb41d13ebfb09ad543
BLAKE2b-256 cf24c8658a910aba17d3da9b320bdcfcf83dc415fe4775b424f28be35b989487

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ad23af51960c08e42f2a9163dce7ee540af5bed584f98a02544e7d1add2521cb
MD5 7f10a1f31cc9057d14d845bce8d15c36
BLAKE2b-256 c0f1d869fa74aa26721e3e1f286e49c602b9b68247be5367d4b2cd964dca3d09

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 76c6cfaa57d28531cb0e1f5a228e8c126d1cc78f0f8145a45a77ed18c27b4254
MD5 4e72a1c8a02a899200877796a9e83f45
BLAKE2b-256 de7091188989aa9ebdb776fe94c6e0b3d5215f6aaaac46994b942063dc167818

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ae064841f85ca830669395f44e5a5f06422a4660aaa4c79d0d9b54116a5b2fa9
MD5 546b0a6f17f754a5fc1d627467de850b
BLAKE2b-256 dcf51686994170cd2b498c68733db0ac49411e86d74398acbea26d4d4e6365e5

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ad18566afc79f044dd0fc52f840d607133cdde893b5a67f9e932ccdd1ab99008
MD5 5b69c18cb1e0180a46d7db41cb0cca63
BLAKE2b-256 f12f7695f78cd85a93de898b6a457ddb74754e007f7725cca1633e86d99e65b9

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8417b0d40c147bd93e628ebf7082665d1ebfe1282c9cdfb32012bd8441642b8e
MD5 47c0b97edca35f692d86f65bbc9c67b6
BLAKE2b-256 b825536c48f74627e0c2074a0338c03c7afbcdf2d8f782cb9af943b61eec6a65

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 631b9628ac5c639ad3f9076efd56a4751ddb3a24b1245c10d2489ed08d8cf83e
MD5 23d514d9a3fb6eca288b7ed37311a38e
BLAKE2b-256 f364f8be5c5e225f48640e7021d3130d1905b2b49b036dd5f8c80961537195af

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 27f05cec53f35e7fbae5681fd121939ad92915a5390378eed39e694f95233d84
MD5 6b9ccdcb46741e7e6fc0381fd8417a53
BLAKE2b-256 360dee762a60bbd44c65bab000642742275c5f026720cc3e4563d7fa9601a8c5

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 75ac11383991ea2754c840a8a5e5d5bbe28160f079e453278a9ce5ebaff91af3
MD5 f8187fec13b051a970de555648fb9d4e
BLAKE2b-256 b8eeee76183f84d23ff677f4f2ac6431fd3f097688610a89c3d757b8d54a4511

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a0a6193cd8324c8735ba209f9e1aa382c34c55d856650857bcecb09e647ecc4d
MD5 6061c39f5c22f61e8f20f5b156aee143
BLAKE2b-256 abc099f4fe30e61d17f4398912303b1f91ea6b45817c125b42bdc34a5535d50a

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d8548ecd69a960bb0559d08ab2062ef9cae51431eb06e5f4b2b40481ae71419d
MD5 f6c66d25c8da95f073a138537f0955da
BLAKE2b-256 1e8334f0afdd464a35f0296debdcf2e769580c6bbeff8795eae7e196bd3950e1

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 84ae8214bef44bd63d13af7537efd2800f70f247d3abcf2f9be2f247c2a05a37
MD5 991d9f45b3ce4d351a51d7280b5c7b4c
BLAKE2b-256 5d67775e368c70b012cc6cfe80d112292987098530c6d38330a9c69e4417e1af

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 35b1253b92a53f0e68693ce07521aecdf077121ad222037a30439ec9a3cb1c08
MD5 78524c7bf80db49b9fb829a83eb40642
BLAKE2b-256 48bb8c17148a78fcae7f511db0a52d1fd58f4bbf8adf5e364577f33dd3068c1d

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 737a4ade9c8942f9d76041b44d0d6be3a8c548884ab550c0393185343214924e
MD5 ab65edf30bd18614f97b27c18462bc9f
BLAKE2b-256 dcba4073c719d88ba77eda60228f254089dba9da7c4d646e23b25f7cf8b87722

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 44ad34ee961b0dd10deb13c8c12acaeb1dd96a28e9641fff26b8c9d5edd3f72e
MD5 3a44c35f233888429e01845d9c2df585
BLAKE2b-256 5b0e785be7abd665efbc1ffbbabac2fdb9c2f3fccf40ae623ea3e0f54a05d63c

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d51d3386774e84968f8158ea3be7894032b99f511c8b3481a811291e03d7283a
MD5 7b77cd961d1557e3934f2e77bf08eca0
BLAKE2b-256 4bd571cfa97737c94ef45fa03e1046a3cd784899ee99c007aa8830d541c071ab

See more details on using hashes here.

File details

Details for the file whitsmooth_rust-0.1.3-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.3-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f813d655ffd3bcae6a7306e2dc0da7d23ce886036c1e978f95c41fcd2ae92cc0
MD5 fc5fb27e0833242664390f2c9d4a8b6d
BLAKE2b-256 8505fe6caf8ce404b1229af37b3c94474e17d0204375c621cb573e89a2dcf096

See more details on using hashes here.

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