Skip to main content

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

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)

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.


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

Metadata

Release files for whitsmooth-rust 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for whitsmooth-rust 0.1.3
File Size Uploaded Provenance Actions
whitsmooth_rust-0.1.3.tar.gz 23.0 kB Without provenance Details for whitsmooth_rust-0.1.3.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for whitsmooth-rust 0.1.3
File Actions
whitsmooth_rust-0.1.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.17+ x86-64 Details for whitsmooth_rust-0.1.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
whitsmooth_rust-0.1.3-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for whitsmooth_rust-0.1.3-cp314-cp314-win_amd64.whl
whitsmooth_rust-0.1.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details for whitsmooth_rust-0.1.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
whitsmooth_rust-0.1.3-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for whitsmooth_rust-0.1.3-cp314-cp314-macosx_11_0_arm64.whl
whitsmooth_rust-0.1.3-cp314-cp314-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.12+ x86-64 Details for whitsmooth_rust-0.1.3-cp314-cp314-macosx_10_12_x86_64.whl
whitsmooth_rust-0.1.3-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for whitsmooth_rust-0.1.3-cp313-cp313-win_amd64.whl
whitsmooth_rust-0.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details for whitsmooth_rust-0.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
whitsmooth_rust-0.1.3-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for whitsmooth_rust-0.1.3-cp313-cp313-macosx_11_0_arm64.whl
whitsmooth_rust-0.1.3-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details for whitsmooth_rust-0.1.3-cp313-cp313-macosx_10_12_x86_64.whl
whitsmooth_rust-0.1.3-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for whitsmooth_rust-0.1.3-cp312-cp312-win_amd64.whl
whitsmooth_rust-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details for whitsmooth_rust-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
whitsmooth_rust-0.1.3-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for whitsmooth_rust-0.1.3-cp312-cp312-macosx_11_0_arm64.whl
whitsmooth_rust-0.1.3-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details for whitsmooth_rust-0.1.3-cp312-cp312-macosx_10_12_x86_64.whl
whitsmooth_rust-0.1.3-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for whitsmooth_rust-0.1.3-cp311-cp311-win_amd64.whl
whitsmooth_rust-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details for whitsmooth_rust-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
whitsmooth_rust-0.1.3-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for whitsmooth_rust-0.1.3-cp311-cp311-macosx_11_0_arm64.whl
whitsmooth_rust-0.1.3-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details for whitsmooth_rust-0.1.3-cp311-cp311-macosx_10_12_x86_64.whl
whitsmooth_rust-0.1.3-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for whitsmooth_rust-0.1.3-cp310-cp310-win_amd64.whl
whitsmooth_rust-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details for whitsmooth_rust-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
whitsmooth_rust-0.1.3-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for whitsmooth_rust-0.1.3-cp310-cp310-macosx_11_0_arm64.whl
whitsmooth_rust-0.1.3-cp310-cp310-macosx_10_12_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.12+ x86-64 Details for whitsmooth_rust-0.1.3-cp310-cp310-macosx_10_12_x86_64.whl
whitsmooth_rust-0.1.3-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details for whitsmooth_rust-0.1.3-cp39-cp39-win_amd64.whl
whitsmooth_rust-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details for whitsmooth_rust-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
whitsmooth_rust-0.1.3-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details for whitsmooth_rust-0.1.3-cp39-cp39-macosx_11_0_arm64.whl
whitsmooth_rust-0.1.3-cp39-cp39-macosx_10_12_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.12+ x86-64 Details for whitsmooth_rust-0.1.3-cp39-cp39-macosx_10_12_x86_64.whl

Total release size: 7.9 MB

Release files / whitsmooth_rust-0.1.3.tar.gz

Download URL whitsmooth_rust-0.1.3.tar.gz
Size 23.0 kB
Tags Source
SHA-256 checksum
How to use checksums
1f58ce95566a0d2ecd8b6408c7473d85a3eae96d7188a8e9afb4dc9af72c3530
BLAKE2b-256 checksum
How to use checksums
5d67e07b5065974f33dbd82e79490f9fab4c523b410da0bf2e61a7e546a45415
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL whitsmooth_rust-0.1.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 362.5 kB
Tags Linux glibc 2.17+ x86-64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
0e8bdc479df0354db06735d9158855ddbfeb54b88b79a0e157e70c79c8297083
BLAKE2b-256 checksum
How to use checksums
8898369b2894dbe3c85d771b95b3c1d617607bc04d7444a677cee0a37f19d02e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp314-cp314-win_amd64.whl

Download URL whitsmooth_rust-0.1.3-cp314-cp314-win_amd64.whl
Size 248.9 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
7526d84303b1910071624bc590669018de03c4fb5467dd1f1ed7b9a6cae3b50f
BLAKE2b-256 checksum
How to use checksums
819d4b071a71ca19639127e7fbff878d2fdf2661554f1cf6725d59c49a2a6ab5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL whitsmooth_rust-0.1.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 359.9 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
652c8f62df2de8d190e39f7987410fdf3d33173073afcbc916e74c25c37e56e9
BLAKE2b-256 checksum
How to use checksums
95fc5cd08ee9219712bdc1a2a645697b2449336635164081c31e1918aff345ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp314-cp314-macosx_11_0_arm64.whl

Download URL whitsmooth_rust-0.1.3-cp314-cp314-macosx_11_0_arm64.whl
Size 316.3 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b4390eae4efb4cf900ad06f85e72c226936de17db3482d22366f03006e0d36b1
BLAKE2b-256 checksum
How to use checksums
cbe537ef6a07ffc2532bb5474c2e4b1bfdb9a4c1ba77c94f49e8036261aea6ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp314-cp314-macosx_10_12_x86_64.whl

Download URL whitsmooth_rust-0.1.3-cp314-cp314-macosx_10_12_x86_64.whl
Size 328.7 kB
Tags CPython 3.14 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
d4492a060b04687b3e4107fdc25bee6e6a6790aba7811f5fb3100293b5292c4d
BLAKE2b-256 checksum
How to use checksums
e38032c1363e71535637187fbe061211966870b28832c5de606b5f0cb52eea1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp313-cp313-win_amd64.whl

Download URL whitsmooth_rust-0.1.3-cp313-cp313-win_amd64.whl
Size 248.1 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
8a8e6eca97ca617d7b6d7fcd3e0e5f0cd2d05a0c2428103d5fd769ddb7c09aa7
BLAKE2b-256 checksum
How to use checksums
7c305b26e9d199ffc12e06c977628d4b93c73ec1a73c0aab7c27dbdd8719d620
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL whitsmooth_rust-0.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 359.4 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
dc2e050eacda24deeab3936ad74605a643851532f6eab3ffc8680b43b5fe9fee
BLAKE2b-256 checksum
How to use checksums
e5006eee141a52e042b027b77a7054f9992e91f059a0d5105946f80b0d203529
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp313-cp313-macosx_11_0_arm64.whl

Download URL whitsmooth_rust-0.1.3-cp313-cp313-macosx_11_0_arm64.whl
Size 317.4 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
827d5882843ff2a9485055a57eefd345853c3cd7d04e6988ea2672a5e4794c1b
BLAKE2b-256 checksum
How to use checksums
7a1263e210873b566ffd3d585893a83b5f9c8b1c51c0b65022863d38f60a8c77
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp313-cp313-macosx_10_12_x86_64.whl

Download URL whitsmooth_rust-0.1.3-cp313-cp313-macosx_10_12_x86_64.whl
Size 328.5 kB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
c920335ec5ef43fc4dd6956998739269ddc0d0573820783fae27ea620bc9d681
BLAKE2b-256 checksum
How to use checksums
cf24c8658a910aba17d3da9b320bdcfcf83dc415fe4775b424f28be35b989487
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp312-cp312-win_amd64.whl

Download URL whitsmooth_rust-0.1.3-cp312-cp312-win_amd64.whl
Size 248.3 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
ad23af51960c08e42f2a9163dce7ee540af5bed584f98a02544e7d1add2521cb
BLAKE2b-256 checksum
How to use checksums
c0f1d869fa74aa26721e3e1f286e49c602b9b68247be5367d4b2cd964dca3d09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL whitsmooth_rust-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 359.6 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
76c6cfaa57d28531cb0e1f5a228e8c126d1cc78f0f8145a45a77ed18c27b4254
BLAKE2b-256 checksum
How to use checksums
de7091188989aa9ebdb776fe94c6e0b3d5215f6aaaac46994b942063dc167818
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp312-cp312-macosx_11_0_arm64.whl

Download URL whitsmooth_rust-0.1.3-cp312-cp312-macosx_11_0_arm64.whl
Size 317.6 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ae064841f85ca830669395f44e5a5f06422a4660aaa4c79d0d9b54116a5b2fa9
BLAKE2b-256 checksum
How to use checksums
dcf51686994170cd2b498c68733db0ac49411e86d74398acbea26d4d4e6365e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp312-cp312-macosx_10_12_x86_64.whl

Download URL whitsmooth_rust-0.1.3-cp312-cp312-macosx_10_12_x86_64.whl
Size 328.6 kB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
ad18566afc79f044dd0fc52f840d607133cdde893b5a67f9e932ccdd1ab99008
BLAKE2b-256 checksum
How to use checksums
f12f7695f78cd85a93de898b6a457ddb74754e007f7725cca1633e86d99e65b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp311-cp311-win_amd64.whl

Download URL whitsmooth_rust-0.1.3-cp311-cp311-win_amd64.whl
Size 250.4 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
8417b0d40c147bd93e628ebf7082665d1ebfe1282c9cdfb32012bd8441642b8e
BLAKE2b-256 checksum
How to use checksums
b825536c48f74627e0c2074a0338c03c7afbcdf2d8f782cb9af943b61eec6a65
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL whitsmooth_rust-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 361.6 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
631b9628ac5c639ad3f9076efd56a4751ddb3a24b1245c10d2489ed08d8cf83e
BLAKE2b-256 checksum
How to use checksums
f364f8be5c5e225f48640e7021d3130d1905b2b49b036dd5f8c80961537195af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp311-cp311-macosx_11_0_arm64.whl

Download URL whitsmooth_rust-0.1.3-cp311-cp311-macosx_11_0_arm64.whl
Size 320.4 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
27f05cec53f35e7fbae5681fd121939ad92915a5390378eed39e694f95233d84
BLAKE2b-256 checksum
How to use checksums
360dee762a60bbd44c65bab000642742275c5f026720cc3e4563d7fa9601a8c5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp311-cp311-macosx_10_12_x86_64.whl

Download URL whitsmooth_rust-0.1.3-cp311-cp311-macosx_10_12_x86_64.whl
Size 331.3 kB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
75ac11383991ea2754c840a8a5e5d5bbe28160f079e453278a9ce5ebaff91af3
BLAKE2b-256 checksum
How to use checksums
b8eeee76183f84d23ff677f4f2ac6431fd3f097688610a89c3d757b8d54a4511
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp310-cp310-win_amd64.whl

Download URL whitsmooth_rust-0.1.3-cp310-cp310-win_amd64.whl
Size 250.2 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
a0a6193cd8324c8735ba209f9e1aa382c34c55d856650857bcecb09e647ecc4d
BLAKE2b-256 checksum
How to use checksums
abc099f4fe30e61d17f4398912303b1f91ea6b45817c125b42bdc34a5535d50a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL whitsmooth_rust-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 361.6 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d8548ecd69a960bb0559d08ab2062ef9cae51431eb06e5f4b2b40481ae71419d
BLAKE2b-256 checksum
How to use checksums
1e8334f0afdd464a35f0296debdcf2e769580c6bbeff8795eae7e196bd3950e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp310-cp310-macosx_11_0_arm64.whl

Download URL whitsmooth_rust-0.1.3-cp310-cp310-macosx_11_0_arm64.whl
Size 320.2 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
84ae8214bef44bd63d13af7537efd2800f70f247d3abcf2f9be2f247c2a05a37
BLAKE2b-256 checksum
How to use checksums
5d67775e368c70b012cc6cfe80d112292987098530c6d38330a9c69e4417e1af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp310-cp310-macosx_10_12_x86_64.whl

Download URL whitsmooth_rust-0.1.3-cp310-cp310-macosx_10_12_x86_64.whl
Size 331.3 kB
Tags CPython 3.10 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
35b1253b92a53f0e68693ce07521aecdf077121ad222037a30439ec9a3cb1c08
BLAKE2b-256 checksum
How to use checksums
48bb8c17148a78fcae7f511db0a52d1fd58f4bbf8adf5e364577f33dd3068c1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp39-cp39-win_amd64.whl

Download URL whitsmooth_rust-0.1.3-cp39-cp39-win_amd64.whl
Size 250.5 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
737a4ade9c8942f9d76041b44d0d6be3a8c548884ab550c0393185343214924e
BLAKE2b-256 checksum
How to use checksums
dcba4073c719d88ba77eda60228f254089dba9da7c4d646e23b25f7cf8b87722
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL whitsmooth_rust-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 362.1 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
44ad34ee961b0dd10deb13c8c12acaeb1dd96a28e9641fff26b8c9d5edd3f72e
BLAKE2b-256 checksum
How to use checksums
5b0e785be7abd665efbc1ffbbabac2fdb9c2f3fccf40ae623ea3e0f54a05d63c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp39-cp39-macosx_11_0_arm64.whl

Download URL whitsmooth_rust-0.1.3-cp39-cp39-macosx_11_0_arm64.whl
Size 321.1 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d51d3386774e84968f8158ea3be7894032b99f511c8b3481a811291e03d7283a
BLAKE2b-256 checksum
How to use checksums
4bd571cfa97737c94ef45fa03e1046a3cd784899ee99c007aa8830d541c071ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / whitsmooth_rust-0.1.3-cp39-cp39-macosx_10_12_x86_64.whl

Download URL whitsmooth_rust-0.1.3-cp39-cp39-macosx_10_12_x86_64.whl
Size 332.2 kB
Tags CPython 3.9 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
f813d655ffd3bcae6a7306e2dc0da7d23ce886036c1e978f95c41fcd2ae92cc0
BLAKE2b-256 checksum
How to use checksums
8505fe6caf8ce404b1229af37b3c94474e17d0204375c621cb573e89a2dcf096
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Security for whitsmooth-rust 0.1.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page