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.


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.


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

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.


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: [ (\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.0.tar.gz (17.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.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (347.9 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.1.0-cp314-cp314-win_amd64.whl (230.1 kB view details)

Uploaded CPython 3.14Windows x86-64

whitsmooth_rust-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (342.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.1.0-cp314-cp314-macosx_11_0_arm64.whl (298.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

whitsmooth_rust-0.1.0-cp314-cp314-macosx_10_12_x86_64.whl (311.9 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

whitsmooth_rust-0.1.0-cp313-cp313-win_amd64.whl (229.7 kB view details)

Uploaded CPython 3.13Windows x86-64

whitsmooth_rust-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (342.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.1.0-cp313-cp313-macosx_11_0_arm64.whl (298.6 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

whitsmooth_rust-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl (313.1 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

whitsmooth_rust-0.1.0-cp312-cp312-win_amd64.whl (229.9 kB view details)

Uploaded CPython 3.12Windows x86-64

whitsmooth_rust-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (343.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (298.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

whitsmooth_rust-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl (313.3 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

whitsmooth_rust-0.1.0-cp311-cp311-win_amd64.whl (232.6 kB view details)

Uploaded CPython 3.11Windows x86-64

whitsmooth_rust-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (346.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (301.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

whitsmooth_rust-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl (314.1 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

whitsmooth_rust-0.1.0-cp310-cp310-win_amd64.whl (232.4 kB view details)

Uploaded CPython 3.10Windows x86-64

whitsmooth_rust-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (346.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (301.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

whitsmooth_rust-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl (314.1 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

whitsmooth_rust-0.1.0-cp39-cp39-win_amd64.whl (232.6 kB view details)

Uploaded CPython 3.9Windows x86-64

whitsmooth_rust-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (347.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

whitsmooth_rust-0.1.0-cp39-cp39-macosx_11_0_arm64.whl (302.4 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

whitsmooth_rust-0.1.0-cp39-cp39-macosx_10_12_x86_64.whl (315.1 kB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: whitsmooth_rust-0.1.0.tar.gz
  • Upload date:
  • Size: 17.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.0.tar.gz
Algorithm Hash digest
SHA256 8950d28c1239077cfde0fd15555733e62b36c89102be7ad2ac9e2a96378699cb
MD5 dab63122f6c65fd3a48c52a6dc660f70
BLAKE2b-256 574b7b8431863ece0ee9391b0107f6e0fa19520ee6fecf0965af82a9d45e88fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f4dc881c3234340b4ee11afe59e58787002772b851422d30e101fa6e06dc3cca
MD5 5c47d425df273be4813e33f6970c925c
BLAKE2b-256 7625dbcdea5283c37b2fc3f7e2d9a8d96ffa54ca5d0d468e954ebd2dfc85aec8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 58ac3593095a9be75e61c82a779021a69517043afbd8610e336156383a23119b
MD5 3371ddbc8045aadb302576535a7f00cc
BLAKE2b-256 4c899d38e6d807929a60a0dbb01826c2c16114eac950919aef97cdee915d8aed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6a1f11cde1cc28ae4742c09531f2ad6c7f80d1eeb44b22d5cdb6711dc6e1c98e
MD5 8c3e32c36f575d945834c90eeeec624d
BLAKE2b-256 f997e40f0a2bf80b5a806ac153a69a4e58677e19961b13ea2ee61016ac6a953c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d684503c674cab8c0858f7101612a731978915b141f895a667d52a8efd21efa3
MD5 1987c84341d535435d1d22753437cf68
BLAKE2b-256 3c2bbfb55ddb3b9ea4a5e7744eedbd1857b99a2472e74f9c9da57d525c2f8d24

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 86134e29d645015ad1be80fc3e7f5960024752bac58403865bb6d99b514c36e2
MD5 918beed8a26272f1cc4d1c357de13090
BLAKE2b-256 e4051e8e21a3b0f7a030df405a0134637d6af9be00293bbb3b5743f1d44bad08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 76bffc26fafbea9eb39196d2481ec348692192322c66ec2ec31966c3eedcd766
MD5 659530ebab271f47ca946d9b127fccec
BLAKE2b-256 a8974b75d05f09e5c026cfb150580fdccdeb93bce8bb73aca2f023f8a57c1b0f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 18eadf28d85d3a5c9e94c5606c814abc4994c388253d46e954be204a43150dde
MD5 8e07cc8c128c5acab0b97f1ce32c16c1
BLAKE2b-256 2b9b015991fefce0077795ae7c0000edf010bb020abd504253785817fe9b911e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d49b659e37fd00f2bcd74cfdad93708c9c1b1186087e4a12226ff46b91c1cf4c
MD5 ac7f8390be4a3f7d2c2c0e051d296c6f
BLAKE2b-256 dd72cc19e98ccf1e53b53569bbdfec8d322c9b91d2f48749f3d2789d12a4fe05

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d07bd988c183bb51cfe2b934e234cf2d4ec06673af02519c097f008b4af2f0c7
MD5 6022adbc7a90428caac2932817965fba
BLAKE2b-256 d7b9056c3ea4bdc4a877a7a14c1a7467ac31fb66c89ff1eacf6e57f4d6b142d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1ecbc3e236f3ecbd0c31c7452aba3e8b0282ca5408aa970fcb932f4f270fe678
MD5 5f077d1e322096e29f77b3c14296d8d8
BLAKE2b-256 b281d85defc0c2fdd11b057b19f26c4628c07907532c6fdf2d342875c1ace42a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7b8e4fccf8712866c07ba41e9e98cc1f0876dd5d32c8971155dee37fea1eb877
MD5 ad4762e633e3a1ec3e53185a3618da1f
BLAKE2b-256 9ac25c553a3dc1ff6df495001593c1576635bdc6f6f40aeba4b0386f9167ed77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3526dd5008b81a1a75ff1478921f9d5a1bdf2c9a0be09aadd8c2b50cd25c4022
MD5 8c932addb9547cf9e76e25c3079483d7
BLAKE2b-256 2f5b2d4da19f0ce031fb29a15aaf38afadb359ed4f84346b509f25badc2ed3f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8f962048fb667a7647d1514cdc00142e24ffd51925bc36dcd794304060bf7867
MD5 54bdb5a3b9517c5be20af5a73af34ddf
BLAKE2b-256 1d4afb55dbb313e35ee60783bdc36edfdb6b808ec5339870f953b9f5ec333fda

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9ffb1038588fc29aa6acda0ff5d26ad8546f129dfc359fb2b9d7ab6a3d80923d
MD5 ddf76871b8c810ebbb342baf44b486f3
BLAKE2b-256 d9f31d2d05ed8c817db57f6d730aebbd069492a0d43f0ce15aa7bff11bb66b9c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4ec70ae323c67435a7a671f7e493141e029716fc1a1a8387d4c0428222e66b33
MD5 570cef7a273fd71c552578cc1634868c
BLAKE2b-256 1b9ee8be949c059476db4aacff1e6ac23482a070989bb3edf14e8408ea8c7aaa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f1f06bdb231a370b4d45a596524e9c436f4fdabe3f7cf97359c8bad27216c80
MD5 770cfab93d0a43d2f5c49a4740a29588
BLAKE2b-256 8ece84995f64a0e412296b88b7e6efd4cd92d6dffae4d40107cd38b1ff6a70e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e93371919911111602d7018c26116edc0f51991a350ad4ed16e3e47cefe98e0c
MD5 de5906dd793615ecc65bf658f163a260
BLAKE2b-256 b011d3a2384dac73583514b4cbe407e0fa6a5a267e429ad527d3a954c4c1da12

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f25c0c346149c359e76b9e0929b3be257af2b5c2718fe97624036be294c7cfa1
MD5 a32d69f15f9ed74fc553a5eca63d4cee
BLAKE2b-256 cc8613c2583854ad26d8e2955f9e9d086b127dbc522561dff105c0c4b05d9fdf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ae694ed335ff95051d8b2d35cb73e1f243d71f3c6986b7058c067d0105278c5b
MD5 753e883fdd2742e797149c981fcdb916
BLAKE2b-256 104aef3d397463e477dc62a6b750852ab852226cebee44854a289edd526875c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 467e9ef0f2f5b744b37f6065be4f16dac5565b2a1dc3a84cd0fa45be2782219f
MD5 bddab480e82a61071cfa79ba5dc92e33
BLAKE2b-256 bcce936fc526b161dc87bed216dc7c9850f8c44f01d5968c9d95db9819b6c1ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b8cbcb08d7c3d5b02685557d85620d57f63858b5eb298d2d4eae12a3fa309e05
MD5 5cf5602582d07f5d8d5e3c514c0e7604
BLAKE2b-256 cc650b65582dab9b11133c920f49fa34d4a954def0e920de4512987d869be11c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 33d683ecfaed51778801820d2c97792c1c7c9e15480b5fe65785b04c4ffe4521
MD5 4bf517594a76a6a6dd74725a033997fd
BLAKE2b-256 8be96b23ce346acf0acebb1aa578e847e833f7273cd4ce2af626838893a04c68

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ac1bd53c9142d8639aa4a093cb8c871625448acaed869d36dc03afac5d0131a5
MD5 59fb98e62498b19d740a72b46d203951
BLAKE2b-256 352cc8f71390bce5969a98e4c0764b7ca8e67b5905332f7a94cf25c05ad617f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4904d793c1dd2398262b5d68e619719fd0fdc3350da49a8b79ae72c8de0c191a
MD5 f864eba020970706f5979d13e683970f
BLAKE2b-256 067f81633c86051bddc3e2a532d788055fcea0981ee0b0cd7fbef9bdce7cb231

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for whitsmooth_rust-0.1.0-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0759ad76c7c1d8ee80a05b353e82043ad2b18448783dcbaa5e0648ccccdf8e27
MD5 6a4310c3906319663be0036917a1963a
BLAKE2b-256 299eafa1b73a8b7f9327ec683f9dfef8a6bbe80af2e98ccfe84cf679d31fa91c

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