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:
Sseries (samples / pixels / bands / locations)Ttime 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}: observationw_{s,t} >= 0: weight (0 means missing/ignored)D: divided-difference operator of orderddefined on a strictly increasing sampling gridxλ(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:
- Solve Whittaker system with current weights
- Compute residuals
r = y - z - Estimate per-series scale (default: MAD)
- Compute standardized residuals
u = r / scale - 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 ~1normalize="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_tolto merge adjacent points within a tolerance (in input-x units). - Increase
epsand/orridgefor 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 ofP = D^T Dk = 2d
Robust IRLS smoother
robust_whittaker_irls_f64(...) -> z_st(or(z_st, w_total_st)ifreturn_weights=True)robust_whittaker_irls_f32(...) -> z_st(or(z_st, w_total_st))
Parameters (both dtypes):
x: strictly increasing sampling positions (lengthT)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 toNoneto 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)
- for Tukey/Huber/Cauchy/Welsch/Fair:
return_weights: return finalw_total_stas 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, prefermerge_x_tolorrobust_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_stwhittaker_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)
| 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)
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.