Skip to main content

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

Project description

whitsmooth_rust

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.


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:

[ (\operatorname{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.


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, normalize=None, eps=1e-12) -> (pb, k)
  • build_pb_f32(x, d, normalize=None, eps=1e-6) -> (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 λ
  • d: difference order (typical 1..6)
  • iterations: IRLS iterations (typical 3..10)
  • weighting: one of "tukey"|"huber"|"cauchy"|"welsch"|"fair"|"hampel"
  • scale: "mad" or "huber"
  • ridge: small diagonal stabilizer (e.g. 1e-10 for f64, 1e-6 for f32)
  • normalize: None / "mean" / "median"
  • eps: numerical floor for stability
  • parallel: parallelize across series (Rayon). Recommended when S is large.
  • 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

Installation / compilation

You need Rust and maturin.

pip install maturin
cd whitsmooth_rust
maturin develop --release

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


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.

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, lam, d, ridge, normalize=None, eps=1e-12, parallel=True) -> z_st
  • whittaker_solve_f32(x, y_st, w_base_st, lam, d, ridge, normalize=None, eps=1e-6, parallel=True) -> z_st

These solve: [ (\operatorname{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.0.1.tar.gz (16.1 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.0.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (347.6 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.0.1-cp314-cp314-win_amd64.whl (229.8 kB view details)

Uploaded CPython 3.14Windows x86-64

whitsmooth_rust-0.0.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (342.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.0.1-cp314-cp314-macosx_11_0_arm64.whl (297.9 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

whitsmooth_rust-0.0.1-cp314-cp314-macosx_10_12_x86_64.whl (311.6 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

whitsmooth_rust-0.0.1-cp313-cp313-win_amd64.whl (229.4 kB view details)

Uploaded CPython 3.13Windows x86-64

whitsmooth_rust-0.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (342.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.0.1-cp313-cp313-macosx_11_0_arm64.whl (298.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

whitsmooth_rust-0.0.1-cp313-cp313-macosx_10_12_x86_64.whl (312.8 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

whitsmooth_rust-0.0.1-cp312-cp312-win_amd64.whl (229.5 kB view details)

Uploaded CPython 3.12Windows x86-64

whitsmooth_rust-0.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (342.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.0.1-cp312-cp312-macosx_11_0_arm64.whl (298.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

whitsmooth_rust-0.0.1-cp312-cp312-macosx_10_12_x86_64.whl (313.0 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

whitsmooth_rust-0.0.1-cp311-cp311-win_amd64.whl (232.2 kB view details)

Uploaded CPython 3.11Windows x86-64

whitsmooth_rust-0.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (346.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.0.1-cp311-cp311-macosx_11_0_arm64.whl (301.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

whitsmooth_rust-0.0.1-cp311-cp311-macosx_10_12_x86_64.whl (313.8 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

whitsmooth_rust-0.0.1-cp310-cp310-win_amd64.whl (232.1 kB view details)

Uploaded CPython 3.10Windows x86-64

whitsmooth_rust-0.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (346.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.0.1-cp310-cp310-macosx_11_0_arm64.whl (301.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

whitsmooth_rust-0.0.1-cp310-cp310-macosx_10_12_x86_64.whl (313.8 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

whitsmooth_rust-0.0.1-cp39-cp39-win_amd64.whl (232.3 kB view details)

Uploaded CPython 3.9Windows x86-64

whitsmooth_rust-0.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (346.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.0.1-cp39-cp39-macosx_11_0_arm64.whl (301.9 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

whitsmooth_rust-0.0.1-cp39-cp39-macosx_10_12_x86_64.whl (314.8 kB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: whitsmooth_rust-0.0.1.tar.gz
  • Upload date:
  • Size: 16.1 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.0.1.tar.gz
Algorithm Hash digest
SHA256 ad0b63632da31dbf07ee493bec5fb04f8956914187f64d156004f3ab8c8dadbd
MD5 a9194437789a82d49ade5ee8ed5ccc22
BLAKE2b-256 8bca0725112bc07aa37f11c386830cc9a90ec61b89c6f7bc9e6b13c7a667438d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 48a7aa21d7b942fb2362a5c72f441abc5ae7f4b74ed5ff075712ff0f3adcc2ba
MD5 87dcc11690161fc499c85a69238754fc
BLAKE2b-256 c450421e625ed334e7286ddc4422e14f8b549de3acea9b38c56d3048371011f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 9888aeac16476e2466c6c12349fd41976d796211547d66651f776a3a8c4e11a5
MD5 028610903512a045a1f1887676a9bf5d
BLAKE2b-256 0ed4eb4968b41d6e17219cd2ce4977c888d608c45de8a078fda330e03e638690

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f380ca69e2c062ce52ba7b49bbfa3028869a6c952dd4bd557bb9f053e2bafc2a
MD5 2af643b0848dc95deb22ce7028534148
BLAKE2b-256 6ca2f843755537ddabef2a0822d2fef99d5d633ffa78189a4be15d19cdb312d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 20fd71095164d3a82006de92ef83f9dea05d3a0dfae39f2047b64abd228a7d45
MD5 99008880a046034f703c7d3bce8d7d09
BLAKE2b-256 82c45295c263b5fb24a2d1cfe22f2892b0cd48cb71a67db99b875901aa496272

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7c435c5a8e25b6e41aeb99aab3886898d4c9058b15fb72279540a5e8e3fdccef
MD5 efa53ce45eb15bc07b1a552d80ef8ed5
BLAKE2b-256 4c7fb49f0c41f3cae47e53d5d7a5a3e6709ae6ae50e86249fb629d18a3dfec15

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9b1cf606e2a581bb1313374b80104d890a95de50036066a0c5afa57ff0e94de9
MD5 4015c14224c30179596aea4d69ca2d47
BLAKE2b-256 1fa16c06a6626306579c3ff0076095aacfcd9ed7a9e07f7d4482027f9be5258b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3fc3043cc0e7528f9f0299935b5c8be91dc22a518821ece78bd0cc3640f641c5
MD5 b02ff6abbf383a22d0d93df06bfbbe33
BLAKE2b-256 4e14b9ad0e5dd4f91ff36bd2d86a2fb13128d6759c8e960a2b9657a8a4c24111

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a3b6fa5dd46b3144bab705d132e957c2f4cb5006556e1434e0a1dd32e6c4d72d
MD5 7782edbae0e679e1bc5c64fb25674eb9
BLAKE2b-256 2b2c8f2588ae7f8eacc91acb6912cfe90eac6f776393cde93d3478cc373ad6f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 72871f8089bacb1dac35de043cb3c5f63ce0a281625bc43cf1363553132bd882
MD5 5060eb262510243f6e8a623b9d9fd08d
BLAKE2b-256 fa78eaa8c7792a2a6e97248b11455acbc1aba330a083d6c49cb8c50aa52e0e51

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 5cb34a77e274eb4da7cb3087f9b0dc119c671fc8f038a156f3ac05bb384270ea
MD5 3d3d243c1adf30003f161a6339c4c05f
BLAKE2b-256 73451bdd05b5409c5cb9cd4f3c09e11f947eb30b1644afc26a3bac5d31a3da94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f16d1e43e2e208436a87971bc76310f38c381f39000fb8c424f72294623496d9
MD5 83ea93abdf5964df6dca70c4ca32c37d
BLAKE2b-256 9ee21e531512ef67dd89a4ac0edb72e620a53874b8ef5f28e21d48a80134fbc1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b43f618baa4a1e4478675011ac1f61ff0a822d46feb566358f7b39abf98145f6
MD5 8400e614223520263a12799eae67413e
BLAKE2b-256 49fcbe83baa6e45632bec7f8cf0b0e42c51e66d7f19a69e3acee10abf77b83d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 072a33dce9e37bc3d48a98360197a97a482ae95bcb91bcf20fa5820b78c5fcaa
MD5 4568f422e6ef9901a8a7af5ec1c96f14
BLAKE2b-256 f358298a0f6e4d6f19dc2a697781c8bde9e825f736f6a1a7c33b93f43a6eed48

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 aa529e62f1f90a28476a704c14a425e77cdc2ce23a153aba391c2542913464f2
MD5 64116fefe01c7e10b545c772e00c7250
BLAKE2b-256 1efa417cc66832b94d6ad77204f17cb1c2c2ceca63e1a8777c1bf0c8bfced9ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 35dfc6e0a0c4fb3a140e22e457b232781159cb34541ae875f4d4d0a564dd5cbf
MD5 e4968f51ec7491ded72a0d37ad1a6430
BLAKE2b-256 5df0d38214562ac42154afe2d872b4b19a9d146c38e9fd139643a6b9da8011de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1bb8f55cb02bb5799d2903852920996cec18091314e3f77af3839b97289b99e0
MD5 a3d9133b0e01cc4b5ee9690072906433
BLAKE2b-256 6e1944bb2795ed56b915ad4e4c24178e4d97f3430175b86b45a9cc1ac264b2dd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 37b400cb6826fdfe254b152f31aa7031c95c031941f9dbf65727753f833e5d4c
MD5 96e9c2d0bea9fb4ef8fa4c25e2905222
BLAKE2b-256 b55c2b495887c7d9b869f333da532b45197fe631081d24a86c2d1fbbb47dfa30

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 62aebc36e5b164726664e44113a174c1390958065eb073c6764319dc15aced80
MD5 6fcf5e9592e882b80a134106ebf3a7bc
BLAKE2b-256 8379e0fc04e789fe3f0e3c3fbbf2ab9f0caf0471b54bf7a03dde4df2d1951a08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5fb6f28a443ee33c1a37d95ba2f6090a85c0db33d20a91ee402336ab4f6ef598
MD5 7430dc1a175a333bec0ef98cd6cdaafa
BLAKE2b-256 1b84bba27d391c9740ae51fcc0e73fa62d7f522b3d06df8568af76abeabbe4ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5d9ee8db3c2e030a0a34c7c9394e218f09bcbff680def7022333cc0677a52cce
MD5 1da6a0eda206ab5a8bf0d8dde4469d86
BLAKE2b-256 5b463c12fc4b1f9c8a0a9bcb3c5d27bed9cf8b2d0dce022111b6e6a29ddd1ca7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b60a3ff7499a1fb2d88ce0eeead0fb372a6e4211112c7d12a573e61adf0bd967
MD5 c196f4216c7dd66e74f1a2e5bdb42d37
BLAKE2b-256 1365982d226aa26ed86b5f67f9e6d1a9c4cf8183babb40d88849d39b62a944e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 8caf3474ac2584b3fef0f057c26b4e6368efc9a45dbbdf5de500498993c09533
MD5 aed0773f24b8b4416f9de2e19721f52a
BLAKE2b-256 1d806a24e528f0212e081ccb156d62da34ce9effca313bb13d04c5ebaa284f08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bebac737382ceccd05a25bd0858000d2065b94f930e6fea305d1419d5e606dc3
MD5 7d06464c520c6ac8f5b56c746d5b26d2
BLAKE2b-256 e297e030faff8adf1d49ca958d6d84376b7ba81d0cbaf59b09b7c3316e8b44b3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b4fa82aa08b0690097c105a39f3ec2a56515b22319116dc10da9830b631e61fe
MD5 88b4212466ed0c7e29333335a9b99737
BLAKE2b-256 446303ee6511930e4696be55d32a3bc023c2786cd6ab1581d51caafba30ecd09

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.0.1-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4ce93b2dafe2bdc5eb7dfc225ca0814a9d797e9fcbbde20c6e3c6c08818e044d
MD5 dced793c9615096eab1c059b18b0e59d
BLAKE2b-256 47ddaf033757ec510002df8c3a6628feb5dbab19a350d883e3997a130efa54b7

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